1. 程式人生 > >7-1 求e的近似值(15 分)

7-1 求e的近似值(15 分)

一、題目

這裡寫圖片描述

二、個人理解

此題主要的關鍵點在於如何不執行超時

我們可以發現題目要求保留小數點後八位,於是我們測試資料發現當n>11時,保留8位的資料就不變了,於是我們可以大膽捨棄以後位數的計算。

對於此類題目,我們要仔細讀題目,發現它讓我們保留到多少位,然後進行測試,不要盲目的去改變演算法。

C語言:

#include <stdio.h>

int factorial(int n)
{
    int factorial = 1;
    for (int i = 1; i <= n; i++) {
        factorial *=  i;
    }
    return
factorial; } int main() { int n; double sum = 1.0; scanf("%d", &n); for (int i = 1; i <= n; i++) { sum += 1.0 / factorial(i); if (i == 11) { //當n>=11時對於保留8位來說已經不變 break; } } //printf("%.9f\n", 1.0 / factorial(12) ); 結果為0.000000002 printf("%.8f\n"
, sum); return 0; }