package fibonacci;
public class Fib {
static int fib(int n)
{
System.out.println("fib(" + n + ") called");
if(n<=1)
{
return n;
}
int temp = fib(n-1) + fib(n-2);
System.out.println("returning to fib(" + n +")");
return temp;
}
public static void main(String[] args)
{
System.out.println("fib(5): " + fib(5));
}
}
出力:再帰フィボナッチプログラムでは、なぜ、左サブツリーが右のものよりも前に呼び出されるのですか(ポストオーダートラバーサルのようなもの)?
呼ば(5)FIBと呼ばれる(4)
FIBと呼ばれる(3)
FIB
FIBは、(1)
FIBと呼ばれる呼ばれる(2)
FIB (0)
fib(2)に戻る
fib(1)
fib(3)012に戻る(2) FIBは呼ば
FIB(0)
がFIBに戻ると呼ばれる呼ばれる(1)
FIB(2)(4)
FIB(3)
FIB呼ばFIBに戻る
(2) 5(FIBに戻る
(0)FIBに戻る
と呼ば
FIBと呼ばれる(1)
FIBと呼ばれる(2)
FIB(1)〜(3)をFIBに戻る
と呼ば)
fib(5):5
PS:fib(n-1)がfib(n-2)より前に呼び出されるのはなぜですか?