Java淺談遞迴的理解
遞迴方法其實就是一個直接或者間接呼叫自己的方法,是一個簡單、實用的方法,在遇到某些不好解決的問題時,可以用遞迴方法來解決,比如:求一段連續自然數之間的和、階乘等等。下面我簡單講講遞迴方法到底是怎麼個情況。
先來一段程式碼:
public class Demo{ public static void main(String [] args){ System.out.println(add(5)); System.out.println(Jc(5)); } //這是求和 public static int add(int a){ if(a==1){ return 1; }else{ return a+add(a-1); } } //這是階乘 public static int Jc(int b){ if(b==0){ return 1; }else{ return b*Jc(b-1); } } }
求1——5的和:
當傳到add方法的實參為5時,第一步進行的判斷是不等於1的,進入else,此時return的值為 5+add(5-1),這裡便是呼叫了自己的add方法,此時add中的引數為4;第二步就是進行add(4)的方法,同樣,先進行的判斷是不等於1的,此時return的值為 4+add(4-1)......當程式執行到add(1)時,進入到第一個判斷裡面,此時返回的結果為1,因為add(1)是add(2)呼叫的,所有我們需要將add(1)的值1返回給add(2),那麼add(2)的值為a+add(1)=2+1=3,add(2)的值再返回給add(3),以此類推......最終的結果就是1+2+3+4+5=15。
階乘同樣是如此。
靈魂畫手。。。^_^(賤笑了)