C程式語言的問題

不好意思這是我大學的作業,我們老師要求我們寫一個程式跟歐拉數有關,之前我們寫過一個問題是1+1/1!+1/2!+1/3!+1/4!+.......1/!,n由user定義(scanf),得出數值e這樣

,但現在老師出了修改版,問題如下:Instead of asking for the term n, the program should ask for the the precision tolerance.When the error of e(n) and e(n+1) is less than the tolerance, print the corresponding (minimum) n and then terminate the program. 可以請各位大大幫我解一下嗎?

1 個解答

評分
  • 8 年前
    最佳解答

    #include <cstdio>

    #include <cstdlib>

    #include <cmath>

    int main()

    {

    double Tolerance, LastSum = 0;

    // 初始化 知道第一項一定是1

    double Sum = 1,Factorial = 1;

    int N = 1;

    printf("Input The Precision Tolerance:");

    scanf("%lf",&Tolerance);

    while(1)

    {

    N ++;// 從第二項開始算

    Factorial *= (N - 1);// 算第N項的階層

    Sum += 1 / Factorial; // 把上一次的總和 加上第N項

    // 如果上一次跟這一次比 小於一個定值 就跳出去

    if(Sum - LastSum < Tolerance) break;

    LastSum = Sum;// 不然就更新

    }

    printf("Minimum n:%d\n", N-1);

    printf("The Value: %lf\n", LastSum );

    }

    參考資料: 自己的經驗
還有問題?馬上發問,尋求解答。