1/0!+1/1!+...+1/n!の和を求めるプログラムC言語プログラム
e=1/0! +1/1! +1/2!+....+1/(number)!を計算する
以下のプログラムを実行したところ、
number =0
1.0000000000
number =1
2.0000000000
number =7
2.7182539683
と数値計算値と一致しているのですが
number = 15 のとき
e = 2.7182818301
と出力され
数値計算値 2.7182818284...と微妙にずれてしまいます。
number=16 でも
e = 2.7182818306
となり数値計算値の2.718281828459043
と微妙にずれています
プログラムの不備がわかる方ご教示お願い致します。
#include<stdio.h> double fact(int n); int main(){ int n, ct; double k; while(1) { printf("number = "); scanf("%d", &n); if(n < 0) { break; } k = 0.0; for(ct = 0; ct <= n; ct ++) { k = k + 1.0/fact(ct); } printf("e = %.10f\n", k); } return 0; } double fact(int n){ int ct, ret = 1; if(n == 0 || n == 1) { return 1.0; } for(ct = 2; ct <= n; ct ++) { ret *= ct; } return (double)ret; }
回答2件
あなたの回答
tips
プレビュー