c - 为了计算一个整数的阶乘,比如说,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;
解决方案
您正在查看的代码不是使用您的
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
变量中。
推荐阅读
- java - 按顺序排列的 jOOQ 子查询
- linux - 如何在 AWS Secrets Manager 中存储多个密钥?
- excel - VBA - 将CSV中每行的第一个值存储到变量中并移动到特定工作表
- xml - 使用 group-starting-with 的 XSLT 递归分组
- javascript - jQuery:查找所有元素
- java - 从cmd运行jar文件时如何在参数中给出sqljdbc_auth.dll的路径?
- oracle - 过程创建时出现编译错误 PL/SQL: ORA-00947: not enough values
- c# - 尝试使用外键从 SQL 表中提取数据时,Visual Studio 未运行
- ios - Swift UITableView scrollToRow 或 setContentOffset 不会滚动到适当的位置
- amazon-web-services - 尝试访问 Amazon Redshift 外部表时出错