我在自学C语言。

for(i=1;i<=k;i++)
    kfact = kfact * i;

尝试用数学公式计算阶乘。
n! = n*(n-1)*(n-2)*(n-3)....*1,但我不知道它如何与上述代码相关。
int k, kfact, i;
kfact = 1;

for(i=1;i<=k;i++)
    kfact=kfact*i;
printf("\n %d factorial is %d",k,kfact);
return 0;

最佳答案

您正在查看的代码不是使用
n! = n*(n-1)*(n-2)*(n-3)....*1公式,而不是等效的n! = (n-1)! * n公式。
它从阶乘0(即1)开始,然后在每次迭代中,计算i的阶乘,作为前一个阶乘(i-1)!乘以i
因此,kfact首先是0!,然后是1!,然后是2!等等。在所有的迭代步骤之后,您的k!变量中会出现kfact

07-27 13:18