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などとして出力され続けますか?

4

2 に答える 2

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

そうであってはならない

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

?

于 2013-03-15T23:47:03.553 に答える
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 にある場合、これは 1 + 0 を割り当てます。arr(3) = arr(2) + arr(1)したがって、arr(3) = 1

iは現在インデックス 4 にあり、これarr(4) = arr(3) + arr(2)は 1 + 1 を割り当てます。したがって、arr(4) = 2

于 2013-03-15T23:47:28.077 に答える