Java技術分享:什麼是遞迴?怎麼用呢?
程式呼叫自身的程式設計技巧稱為遞迴( recursion)。遞迴做為一種演算法在程式設計語言中廣泛應用。但是如果沒終止條件會造成死迴圈,所以遞迴程式碼裡要有結束自調自的條件。接下來透過一個案例來學習如何使用遞迴演算法計算自然數之和,如例Example1.java。
public class Example1 {
public static void main(String[] args) {
int sum=getsum(4); //呼叫遞迴方法,獲得1~4的和
System.out.println("sum="+sum); //列印結果
}
//下面的方法使用遞迴實現求1~n的和
public static int getsum(int n) {
if(n==1){
//滿足條件,遞迴結束
return 1;
}
int temp=getSum(n-1);
return temp+n;
}
}
執行結果為:
sun = 10
Example1.java中,定義了一個 getSum()方法用於計算1~n之間自然數之和。例程中的12行程式碼相當於在 getSum()方法的內部呼叫了自身,這就是方法的遞迴,整個遞迴過在n==1時結束。整個遞迴過程中 getsum()方法被呼叫了4次,每次呼叫時,n的值都會遞減。當n的值為1時,所有遞迴呼叫的方法都會以相反的順序相繼結束,所有的返回值會進行累加,最終得到結果10。
使用遞迴時需要注意的問題:
【1】遞迴就是方法裡呼叫自身。
【2】在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。
【3】遞迴演算法程式碼顯得很簡潔,但遞迴演算法解題的執行效率較低。所以不提倡用遞迴設計程式。
【4】在遞迴呼叫的過程中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等,所以一般不提倡用遞迴演算法設計程式。
【5】在做遞迴演算法的時候,一定把握出口,也就是做遞迴演算法必須要有一個明確的遞迴結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞迴了。
如果大家正在學習java知識或者是對java知識比較感興趣的話,可以關注我,後期分享更多Java知識!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2769459/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ftp,ftp是幹什麼的,怎麼運用呢?FTP
- 什麼是遞迴演算法遞迴演算法
- httpdns是個什麼技術,有什麼用httpdDNS
- Java技術分享:什麼是資料庫連線池?Java資料庫
- 解讀:什麼是Java的遞迴演算法?Java遞迴演算法
- Java到底是什麼呢Java
- 什麼是java?為什麼大家都學習java技術?Java
- Web前端技術分享:什麼是塊元素?什麼是行內元素?Web前端
- 什麼是遞迴解析伺服器?遞迴解析伺服器的作用是什麼?遞迴伺服器
- vr全景技術是指什麼?什麼是vr全景技術?VR
- Java到底是什麼?學習java可以做什麼呢?Java
- 前端技術分享:什麼是MongoDB資料庫?前端MongoDB資料庫
- Java培訓:什麼是Java?為什麼大家都學習Java技術?Java
- 什麼是cdn技術
- 什麼是技術債,為什麼要還技術債?
- 什麼是CDN?CDN的技術原理是什麼?
- Java是什麼? Java適用於什麼工作?Java
- css--BFC是什麼,有什麼用,怎麼用?CSS
- 學Java需要什麼技巧呢?分享這4個Java
- 什麼是CDN加速技術
- 隧道代理技術是什麼?
- Python是什麼?具有怎麼樣的特點呢?Python
- 股票峰迴路轉是什麼意思?峰迴路轉的技術特徵特徵
- Java技術分享:”==“和 equals 方法究竟有什麼區別?Java
- 逐步學習什麼是遞迴?通過使用場景來深入認識遞迴。遞迴
- 蘋果Feedback是什麼?有什麼用?怎麼刪除?蘋果
- 技術分享 | undo 太大了怎麼辦
- 什麼是好的技術文件?
- 什麼是Code-Behind技術
- Java是什麼_Java是做什麼的?Java
- 數字化是什麼?怎麼幹?技術與業務如何融合?(一)
- 遞迴解析和權威解析的區別是什麼?遞迴
- 什麼是虛擬化技術,為什麼要虛擬化技術?薦
- 【MySQL】究竟什麼是MVCC呢?MySqlMVC
- 代理埠是什麼意思呢?
- 這是什麼東西呢?
- 什麼是重繪repaint?什麼是迴流reflow?AI
- 技術美術師是做什麼的?