我一直在读乔恩·埃里克森的书《黑客--剥削的艺术》(第二版,无淀粉出版社).在第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);
书中写道,变量b将包含120,因为阶乘函数将使用参数5调用并返回120.
这样对吗?据我所知,每次迭代都会给x分配一个新的数字,因此条件i<;x始终为真.对我来说,这看起来像是一个无限的for循环,但我可能错了.我已经在出版商的网站上查看了勘误表,但我找不到解决我问题的信息.
如果我弄错了,有没有人能给我解释一下出了什么问题?我附上这本书的节选,以供参考.