42817


プログラミング初心者です。

[code]

    int f(int n)
    {
        if(n==0)
            return 0;
        else
            return n + f(n-1);
    }
    
[/code]

上記コードにおいて,`f(5)`を求めるとき、アウトプットが15となるのですが、  
なぜこのようになるかわかりません。

個人的には `return 5 + f(4)`
となり、`f(4)`は3ですので合計8だと考えたのですが、なぜこのような違いが生じるかご教示いただけますと幸いです。

どうぞよろしくお願いいたします。


CC BY-SA 3.0
2018-03-31T02:41:49.427
42816
2018-03-31T17:03:30.443
2018-03-31T17:03:30.443
3060
26303
question
c++
再帰関数を用いたフィボナッチ数列の計算


このコードはフィボナッチ数列を計算しません。なぜ `f(5)` が `15` を返すのかは、ひとつずつ順番に考えると分かります。

[code]

    f(0) = 0  (n == 0 なので)
    f(1) = 1 + f(0) = 1 + 0  = 1
    f(2) = 2 + f(1) = 2 + 1  = 3
    f(3) = 3 + f(2) = 3 + 3  = 6
    f(4) = 4 + f(3) = 4 + 6  = 10
    f(5) = 5 + f(4) = 5 + 10 = 15
    
[/code]


CC BY-SA 3.0
2018-03-31T03:02:58.270
42817
2018-03-31T04:52:18.177
2018-03-31T04:52:18.177
19110
19110
42816
answer