標題:
遞迴演算法
[打印本頁]
作者:
葉桔良
時間:
2022-4-9 13:22
標題:
遞迴演算法
本帖最後由 葉桔良 於 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
*/
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2