2015-09-17 61 views
1

我正在寫一個C++程序來計算一系列的總和:遞歸函數計劃專邏輯錯誤計算了一系列的總和

enter image description here

所以我寫了一個遞歸函數這樣:

double func(int n) 
{ 
    if(n==1) 
     return 1; 
    else 
     return pow(1/n, n) + func(n-1); 
} 

對於以下系列, 當n1,然後sum是:1
n2,然後sum是:1.25
n3,所述sum1.3611

但是當被執行時,上面的代碼,返回1用於n所有值。 有人請告訴我這是什麼?

+0

嘗試使用float或double作爲INT不存儲小數 –

+0

是的,我已經使用雙象返回的數據類型。 –

+1

你有沒有試過'1.0/n'? – Beta

回答

2

因爲n是一個整數,所以1/n總是會產生一個整數結果,因爲編譯器推斷1是一個整數。

將其更改爲1.0/n,但是,將產生雙重效果。

+0

是的,它的作品! –

+1

@Kevin Paul如果有效,請接受答案。 – Ziezi