1. 程式人生 > >Java淺談遞迴的理解

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。

      階乘同樣是如此。

靈魂畫手。。。^_^(賤笑了)