遞歸的特點,可以看出遞歸可以大大縮短程序的代碼,有意識的使用遞歸,可以用較短的代碼解決一些復雜的問題。甚至有些問題非得使用遞歸解決不可。那么什么時候我們該使用遞歸呢?
遞歸算法的基本思想是:把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。
一個問題要采用遞歸方法來解決時,必須符合以下三個條件:
1.解決問題時,可以把一個問題轉化為一個新的問題,而這個新的問題的解決方法仍與原問題的解法相同,只是所處理的對象有所不同,這些被處理的對象之間是有規律的遞增或遞減;
2.可以通過轉化過程是問題得到解決;
3.必定要有一個明確的結束遞歸的條件,否則遞歸將會無止境地進行下去,直到耗盡系統資源。也就是說必須要某個終止遞歸的條件。如求階乘問題,我們要求n的階乘(n!),可以把這個問題轉化為n*(n-1)!,而要求(n-1)!又可轉化為(n-1)*(n-2)!,……,這里面都有一個一個數乘以另一個數階乘的問題,被處理的對象分別是n,n-1,……,是有規律的遞減。但是我們不能讓程序無休止的乘下去,必須要給他一個結束條件,該問題恰好有一個結束條件,那就是當n=0時,0!=1。
