日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学点 C 语言(35): 函数 - 递归

發布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学点 C 语言(35): 函数 - 递归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 遞歸就是: 函數自己調用自己

這是一個最簡單的遞歸, 不過它會一直執行, 可用 Ctrl+C 終止.
#include <stdio.h>void prn(void) {printf("C++Builder 2009\n");prn(); /* 自調用; 注意它會一直執行, 可用 Ctrl+C 終止執行 */ }int main(void) {prn();getchar();return 0; }
2. 使用遞歸一定要有跳出的條件:
#include <stdio.h>void prn(int num) {printf("%d\n", num);if (num > 0) prn(--num); }int main(void) {prn(9);getchar();return 0; }
3. 實例: 翻轉字符串
#include <stdio.h>void revers(char *cs);int main(void) {revers("123456789");getchar(); return 0; }void revers(char *cs) {if (*cs){ revers(cs + 1);putchar(*cs);} }
4. 實例: 階乘
#include <stdio.h>int factorial(int num);int main(void) {int i;for (i = 1; i <= 9; i++)printf("%d: %d\n", i, factorial(i));getchar(); return 0; }int factorial(int num) {if (num == 1)return(1);elsereturn(num * factorial(num-1)); }
5. 實例: 整數到二進制
#include <stdio.h>void IntToBinary(unsigned num);int main(void) {IntToBinary(255); /* 11111111 */getchar();return 0; }void IntToBinary(unsigned num) {int i = num % 2;if (num > 1) IntToBinary(num / 2);putchar(i ? '1' : '0'); // putchar('0' + i); /* 可代替上面一句 */ }
6. 剖析遞歸:
#include <stdio.h>void prn(unsigned n);int main(void) {prn(1);getchar();return 0; }void prn(unsigned n) {printf("%d: %p\n", n, &n); /* A */if (n < 4) prn(n+1); /* B */printf("%d: %p\n", n, &n); /* C */ }
本例輸出效果圖:



分析:
程序運行到 A, 輸出了第一行.
此時 n=1, 滿足 < 4 的條件, 繼續執行 B 開始了自調用(接著會輸出第二行); 注意 n=1 時語句 C 還有待執行.
...如此循環, 一直到 n=4, A 可以執行, 但因不滿足條件 B 執行不了了; 終于在 n=4 時得以執行 C.
但此時內存中有四個函數都等待返回(分別是 n=1、2、3、4 時), 咱們分別叫它 f1、f2、f3、f4.
f4 執行 C 輸出了第五行, 函數返回, 返回給 f3(此時 n=3), f3 得以繼續執行 C, 輸出了第六行.
f3 -> f2 -> 繼續 C, 輸出了第七行.
f2 -> f1 -> 繼續 C, 輸出了第八行, 執行完畢!

如此看來, 遞歸函數還是很費內存的(有時不如直接使用循環), 但的確很巧妙.

總結

以上是生活随笔為你收集整理的学点 C 语言(35): 函数 - 递归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。