遞回的定義
- 在高級語言中,函式呼叫自己和呼叫其他函式并沒有本質的不同,我們把一個直接呼叫自己或通過一系列的呼叫陳述句間接地呼叫自己的函式,稱作遞回函式,
- 不過,寫遞回程式最怕的就是陷入永不結束的無窮遞回中,切記,每個遞回定義必須至少有一個條件,當滿足這個條件時遞回不再進行,即函式不再呼叫自身而是回傳,
- 迭代和遞回的區別是:迭代使用的是回圈結構,遞回使用的是選擇結構,
- 使用遞回能使程式的結構更請晰、更簡潔、更容易讓人理解,從而減少讀懂代碼的時間,
- 但大量的遞回呼叫會建立函式的副本,會消耗大量的時間和記憶體,而迭代則不需要此種付出,遞回函式分為呼叫和回退階段,遞回的回退順序是它呼叫順序的逆序,
舉個例子,計算n的階乘 n!

用數學知識找到了階乘的規律,就可以使用遞回,快速解決問題
代碼如下:
package com.lbl;
public class n的階乘 {
public static void main(String[] args) {
int sum = fun(4);
System.out.println(sum);
}
public static int fun(int n){
if(n==0){
return 1;
}
return n*fun(n-1);
}
}
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33110.html
標籤:其他
上一篇:【JAVA】有贊2021校招資料筆試(B卷)——都是牛客原題
下一篇:arcgis中找不到要打開的檔案
