2013-03-15 114 views
4
int * fibonacci(int n) { 
    int range = n + 1; 
    int * arr = malloc(range * sizeof(int)); 
    arr(0) = 0; 
    arr(1) = 1; 
    for(int i = 2; i < range; ++i) { 
     arr(i) = arr(0) + arr(1); 
    } 
    return arr; 
} 

我似乎無法確定我的程序出了什麼問題,輸出不斷出現爲0,1,1,1,1等等?斐波那契錯誤的輸出? (C)

+1

您應該使用方括號,例如'arr [0]'或'arr [i]' – perreal 2013-03-16 00:33:08

回答

5
arr(i) = arr(0) + arr(1); 

不應該說是

arr(i) = arr(i-1) + arr(i-2); 

5

你的代碼做什麼是以下幾點:

arr(3) = 0 + 1 
arr(4) = 0 + 1 
arr(5) = 0 + 1 

等你一遍又一遍分配相同的值。

你需要做的:

arr(i) = arr(i - 1) + arr(i - 2); 

說明:

假設你有數組:

  • ARR(1)= 0
  • ARR(2)= 1

i和在索引3,這將分配arr(3) = arr(2) + arr(1)爲1 + 0。因此ARR(3)= 1

i現在是在索引4,這將分配arr(4) = arr(3) + arr(2)爲1 + 1。因此常用3( 4)= 2