首页 > 解决方案 > 为了计算一个整数的阶乘,比如说,k,我必须写一个语句 kfact = kfact *i。我不明白为什么

问题描述

我有点自学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;

标签: cloops

解决方案


您正在查看的代码不是使用您的 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变量中。


推荐阅读