今天遇到一到关于阶乘求和的问题,如下:
#include<stdio.h>
float fun(int n)
{
int i;
float s=0.0,k=1;
for(i=1;i<=n;i++)
{
k=k/i; //填空疑惑处,我刚开始填的是1/(k*i)
s+=k;
}
return s;
}
int main()
{
printf("result is %f",fun(6));
return 0;
}
我填的代码算出来是3点几,我刚开始是知道n! =n-1 ! * n这个公式的,那里的代码就是k每次都会算出一个分数的阶乘,所以我就根据每次分子是1,分母的阶乘是由n-1!*n可以算出来,但是结果却不对。
而我看了答案分析出他这里k/i的就是分子是上一个1/k-1!/i来算出下一个数字的阶乘,请问这里是不是因为,例如:1/2!转换为数学表达式是:1 / 1 * 2 ->C语言表达式:1 * 2 / 1 -> 2! / 1 ?
望解答!