本帖最後由 葉桔良 於 2022-4-9 14:34 編輯
定義:演算法(函式)中有呼叫自己(Self Calling)的敘述
目的:重複執行一段程式
(可以用迴圈也可以用遞迴來處理,因此迴圈必可改寫成遞迴,反之亦然)
特性:
1.程式碼簡潔
2.執行效率較迴圈慢
3.將控制權轉移到呼叫的函式
4.呼叫函式後要將變數值及狀態由Stack中Pop出來
(維基百科:堆疊)
遞迴的種類:
遞迴的要素:
1.遞迴關係式:找出問題共通的關係,以便反複呼叫自己
2.終止條件:遞迴結束的條件
白話版的遞迴例子:
從前有座山,山裡有座廟,廟裡有個老和尚講故事,講的什麼呢?從前有座山,山裡有座廟,廟裡有個老和尚講故事,講的什麼呢?從前有座山,山裡有座廟,廟裡有個老和尚講故事,講的什麼呢?從前有座山,山裡有座廟...
累加程式範例- import java.util.Scanner;
- public class JPD03 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
- int n;
- while(true)
- {
- System.out.print("Input n : ");
- n=keyboard.nextInt();
- System.out.println(n+"的累加="+add(n));
- }
- }
-
- static int add(int n)
- {
- if(n==1) //邊界條件
- {
- return 1;
- }else
- {
- return n+add(n-1);
- }
- }
- }
- // 10 + add(9)
- // 10 + 9 + add(8)
- // . . .
- // 6 * 5 * 4 * 3 * 2 * 1
- /* 遞迴程式設計
- cal(5)
- =5+cal(4)
- =5+4+cal(3)
- =5+4+3+cal(2)
- =5+4+3+2+cal(1)
- =5+4+3+2+1
- */
複製代碼 |