|
程式實例: 遞迴 intfactorial(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 |
| 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)); } |
| 歡迎光臨 中央論壇 - CENTER BBS (https://centerbbs.com/) | Powered by Discuz! X3 |