2010-03-11 52 views
0

我有一個序列。序列有無遞歸

a1 = 1 - cos(x); 
ai = a1 + (-1)^(i-1) * x^(2*i-2)/(2*i-2)! 

我需要使用和不使用遞歸寫這個。但它有不同的結果。
這裏是我的代碼:http://codepaste.net/q213q6

+0

看起來像功課我能想到的一個地方。請把這個標籤如果爲真 – Andrey

+0

我想你的序列是收斂到零。如果是這樣,它應該被定義爲a_i = a_(i-1)+ ... –

回答

1

我打算假設這是家庭作業,如果我錯了我會回來編輯這篇文章或重新發布。

首先,您應該嘗試以尾遞歸方式編寫階乘函數。雖然它在C中可能沒有太大的區別,但這是一個好習慣。

int helper(int x, int acc) { 
    if(x == 0) { 
     return acc; 
    } 
    else { 
     return helper(x - 1, acc * x); 
    } 
} 

int factorial(x) { 
    helper(x, 1); 
} 

接下來,您一般不希望把一個循環的遞歸函數,這有點違背了點內。將遞歸調用想象爲一次迭代,並返回或回想。

+0

你是指'助手(x-1,acc * x)'? 'factorial',你定義它的方式,只需要一個參數。 – Tim

+0

我做了,謝謝。我決定讓幫手成爲助手而不是實際的功能,並忘記完成修復。 – zellio