有人可以解释一下为什么这段代码返回0?
#includeint factorial(int input) { if (input > 0) { input--; return input * factorial(input); } return 1; } int main() { printf("%d", factorial(20)); return 0; }
Sourav Ghosh.. 7
对于最后一次入站迭代,在代码中,当input
为1时,执行
if (input > 0) { input--; // see here, 1 goes to 0..... return input * factorial(input); }
基本上给你
return 0 * factorial (0);
最终将整个返回值设为0.
对于最后一次入站迭代,在代码中,当input
为1时,执行
if (input > 0) { input--; // see here, 1 goes to 0..... return input * factorial(input); }
基本上给你
return 0 * factorial (0);
最终将整个返回值设为0.