我在自学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
。