1. 程式人生 > >資料結構5--遞迴

資料結構5--遞迴

1.什麼是遞迴?

    是指在定義自生的過程中有直接或間接的呼叫自身的一種演算法

2.什麼樣的問題可以用遞迴演算法?

  1.    一個問題可以被分解為若干的子問題
  2. 子問題和上層問題的解決方案一致
  3. 外層問題的解決依賴於子問題的解決

3.舉個例子

  計算n的階乘:n! =n*(n-1)!

  使用的時候要注意兩點,第一不能無限遞迴下去,那就成死迴圈了,第二要計算遞迴方法的當前值,需要重複呼叫自身直到達到停止條件為止。

/*
    計算n的階乘
     */
    public static int getN(int n)
    {
        if (n==0)
        {
           return 1;
        }
        else {
            return getN(n-1)*n;
        }
    }

 第二個案例:非彼拉切數列

1,1,2,3,5,8,13,21.。。。。。。

 /*
    斐波拉且數列 1,1,2,3,5....
     */
    public  static  int getFB(int n)
    {
        int res=0;
        if (n<1)
        {
            return res;
        }
        if (n==1||n==2)
        {
           return 1;
        }
        else
        {
            return getFB(n-1)+getFB(n-2);
        }
    }