我正在進行一個階乘總和,如:1/1!+1/2!+1/3!...
,直到達到所需的數量。這裏是我的代碼到目前爲止:因子分數之和
#include <stdio.h>
int factorial(int n)
{
if (n==0)
return 1;
else
return 1/(n * factorial(n-1));
}
int main()
{
int i, n;
float sum=0;
printf("Enter desired factorial fraction: ");
scanf("%d", &n);
for (i=1; i<=n; i++) sum = sum + factorial(i);
printf("The value is %f\n", sum);
return 0;
}
我有一個小想法,我在做什麼,我真的很新。我的思考過程是設置數字計算函數(我的行話可能是關閉的),然後啓動主函數。我以爲我有權利設置,但幾個小時後,我覺得失去了。任何幫助和指導將非常感謝。
更新
下面是更新後的代碼:
#include <stdio.h>
float factorial(int n)
{
if (n==1)
return 1;
else
return ((1.0/n) * factorial(n-1.0));
}
int main()
{
float i, n;
float sum=0;
printf("Enter desired factorial fraction: ");
scanf("%f", &n);
for (i=1; i<=n; i++) sum = sum + factorial(i);
printf("The value is %f\n", sum);
return 0;
}
所以,謝謝你們,現在唯一剩下的東西是我要弄清楚爲什麼我的「0」輸入不產生結果因爲0!= 1,所以「1」。我應該如何移動「int main()」中的if語句?
我想你理解錯了....小編號和調試運行一下,看看...... – Dani
一個輕微的評論。大數的階乘會導致溢出錯誤。它更好地通過使用for循環直接找到1.0/factorial(n)。像'd = 1;對於(i = 1; i <= n; i ++)d/= i;'。對於較大的'n',這應該接近0.記住要檢查'n == 0'等等... – ssm