我一直在读 Jon Erickson 的书《黑客——剥削的艺术》(第二版,No Starch Press)。在第 17 页,我偶然发现了一些 C 语言代码,该函数应该计算数字的阶乘。我有一些Python编程技巧,但我是C初学者。代码是:
int factorial(int x)
{
int i;
for(i=1; i < x; i++)
x *= i;
return x;
}
int a=5, b;
b = factorial(a);
Run Code Online (Sandbox Code Playgroud)
书中写道,变量 b 将包含 120,因为阶乘函数将以 5 为参数调用,并将返回 120。
它是否正确?据我所知,x 在每次迭代中都会被分配一个新数字,因此条件 i < x 始终为真。对我来说这看起来像是一个无限循环,但我可能是错的。我已经检查了出版商网站上的勘误表,但找不到可以解决我的问题的信息。
如果我犯了一个错误,有人可以向我解释一下哪里出了问题吗?我附上该书的摘录以供参考。