1. 程式人生 > 實用技巧 >遞迴(面試高頻題)

遞迴(面試高頻題)

遞迴(面試高頻題)

就是一個方法,自身呼叫自身,但遞迴不適用於較大資料計算,會導致計算器記憶體不足從而崩潰

遞迴包含兩個部分:

  1. 遞迴頭:什麼時候不呼叫自身方法。如果沒有遞迴頭,就會陷入死迴圈。

  2. 遞迴體:什麼時候需要呼叫自身方法。

    遞迴的演算法公式

package weiwei.method;
public class Demo5 {
public static void main(String[] args) {
System.out.println(f(5));//輸出遞迴
}



//5! 5*4*3*2*1
public static int f(int n){//int一個變數n

if (n==1){//如果n等於1的時候,他的階乘就是 1*1,所以結果還是為1
return 1;//就讓他直接輸出1
}else{//如果n不等於1的情況下
/*輸出n*f(n-1),加上n為5,就是5*f(5-1) 然後賦(5-1)結果不為1,就繼續下去,
f(5-1)=4; f(4-1)=3; f(3-1)=2; f(2-1)=1; 到此等於1了之後,就達到了遞迴的邊界條件,
而1在 n==1的這個條件時,return了一個具體的值,所以1會再次返回找到f(3-1),給他賦一個具體的
值為2,2又會去給f(4-1)賦值3,這樣一直賦值到5,然後5把結果輸出給了main方法,這樣才得以輸出*/
return n*f(n-1);
}
}
}

遞迴和階乘一樣,是一個層層遞進的關係,但遞迴的執行順序更麻煩,假設遞迴為5,就可以看做

5==n時: n* f(n-1); f(n-1); f(n-1); f(n-1)獲得確定值1後再次返回輸出

5* f(5-1); f(4-1); f(3-1); f(2-1)從右到左一次賦值過去,最終得到準確的值,再將值給main方法