遞歸算法就是在程序中不斷反復調(diào)用自身來達到求解問題的方法。這里的重點是調(diào)用自身聋迎,這就要求待求解問題能夠分解為相同問題的一個子問題。這樣枣耀,通過多次遞歸調(diào)用霉晕,便可以完成求解。
遞歸調(diào)用是一個方法在其方法體內(nèi)調(diào)用其自身的方法調(diào)用方式捞奕。這種方法也稱為"遞歸方法"牺堰。在遞歸方法中,主調(diào)方法又是被調(diào)方法颅围。執(zhí)行遞歸方法將反復調(diào)用其自身伟葫。每調(diào)用一次就進入新的一層。
方法的調(diào)用分為兩種情況:直接遞歸和間接遞歸院促。
- 直接遞歸筏养,即在方法中調(diào)用方法本身斧抱。
- 間接遞歸,即間接地調(diào)用一個方法撼玄,如A方法調(diào)用B方法夺姑,B方法又調(diào)用方法A。間接遞歸用得不多掌猛。
非遞歸形式比遞歸形式運行速度要慢一些盏浙。這是因為附加的方法調(diào)用增加了時間開銷。
遞歸算法常用于一些數(shù)學計算荔茬,或者有明顯的遞推性質(zhì)的問題废膘。理解遞推最常用的一個例子是求階乘法:
import java.util.Scanner;
public class Solution {
public static int fact(int n) {
if (n <= 1) {
return 1;
} else {
return n * fact(n - 1);
}
}
public static void main(String[] args) {
System.out.println("請輸入要求階乘的一個整數(shù):");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(n + "的階乘結果為:" + fact(n));
}
}