搜索
熱搜: 活動 交友 discuz
查看: 2911|回復: 0
打印 上一主題 下一主題

[教學] C 的遞迴

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-9-4 08:58:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
C 語 言 的 函 數 可 進 行 遞 迴 呼 叫 ( recursive call ) , 也 就 是 說 在函 數 之 中 可 呼 叫 函 數 本 身 。 函 數 在 進 行 遞迴 呼 叫 時 , 在 其 所 使 用 的 變 數 被 堆 積 在 堆 疊 區 域 , 每次 執 行 return 敘 述 , 函 數 在 該 層 呼 叫 中 所 使 用 的 變 數 就 從 堆 疊 返 回 。l
遞迴函數之特性(1)
每 次 執 行 return 敘 述,問題範圍縮小
(2)
具有一個終止遞迴之條件

程式實例: 遞迴

int
factorial(int j)

{

if(n==1)

return(1);

else

return(n*factorial(n-1));

}


void main(void)

{

int i;

for (i=0; i< 5; i++)

printf("%d! = %d\n", i , factorial(i));

}



result :

1! is 1

2! is 2

3! is 6

4! is 24
l
遞迴函數之內部處理1.
一般函數之呼叫
2.
遞迴函數之呼叫

01
* =================================================== */
02
/*
程式實例:使用列印陣列函數說明遞迴函數之呼叫
*/
03
/* ================================================== */
04

05
int list[6] = { 1, 2, 3, 4, 5, 6 };
/*
陣列內容
*/

06

07
/* ----------------------------------------------------------------------------------- */
08
/*
遞迴陣列反向列印函數
*/

09
/* ----------------------------------------------------------------------------------- */
10
void invert_array(int j)
11
{
12
if ( j < 6 )
/*
終止條件
*/

13


{
/*
遞迴串列列印函數呼叫 */
14

invert_array(j + 1);

15


printf("[%d]",list[j]);
/*
列印元素資料 */
16

}

17
}
18
/* ----------------------------------------------------------------------------------- */
19
/*
主程式: 反向列印陣列內容.
*/

20
/* ----------------------------------------------------------------------------------- */
21
void main()
22
{
23


int i;

24

25
printf("陣列的內容:\n");
26


for ( i= 0;
i < 6 ; i++)

27


printf("[%d]",list);
/*
列印元素資料 */
28

printf("\n");
/*
換行
*/

29

printf("
遞迴列印陣列的內容:\n");
30

invert_array(0);
/*
呼叫列印函數 */
31


printf("\n");
/*
換行
*/

32
}



程式實例:
費博尼西數列


long
fib(int n)

{

if (n <=2)


return (1);


return (fib( n-2) + fib(n-1)
);
}

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-6-25 17:53 , Processed in 0.040984 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表