遞歸
理解遞歸,首先需要了解一種數據結構:堆棧(簡稱棧)。棧是一種後進先出的數據結構。在程序運行時,系統每次向棧中放入一個對象,棧指針會向上移動一個位置;當系統從棧中取出一個對象時,最近進棧的對象會被取出,指針向下移動一個位置。(棧存在於每個程序中,他不需要編寫代碼進行維護,而是由系統自動處理)
遞歸的基本思想:把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。總而言之,遞歸處理問題就是將問題規模逐步縮小的過程。
1、階層
//參數n是輸入的計算階層的整數
int fact(int n){
if(n==0){ //遞歸結束的條件
return 1;
}else{
renturn n*fact(n-1);
}
}
2、兔生兔
斐波那契數列
公式:Fn = Fn-1 + Fn-2
int fibo(int n){
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return fibo(n-1)+fibo(n-2);
}