您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言遞歸函數如何實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C語言遞歸函數如何實現”文章能幫助大家解決問題。
遞歸是一種數學上分而自治的思想
遞歸需要有邊界條件
當邊界條件不滿足時,遞歸繼續進行
當邊界條件滿足時,遞歸停止
遞歸將大型復雜問題轉化為與原問題相同但規模較小的問題進行處理。
函數體內部可以調用自己
遞歸函數
函數體中存在自我調用的函數
遞歸函數是遞歸的數學思想在程序設計中的應用
遞歸函數必須有遞歸出口
函數的無限遞歸將導致程序棧溢出而崩潰
遞歸模型的一般表示法
用遞歸的方法編寫函數求字符串長度
代碼如下:
#include <stdio.h> int strlen_r(const char* s) { if( *s ) { return 1 + strlen_r(s+1); } else { return 0; } } int main() { printf("%d\n", strlen_r("abc")); printf("%d\n", strlen_r("")); return 0; }
輸出結果如下:
斐波拉契數列遞歸解法
1,1,2,3,5,8,13,21,...
代碼如下:
#include <stdio.h> int fac(int n) { if( n == 1 ) { return 1; } else if( n == 2 ) { return 1; } else { return fac(n-1) + fac(n-2); } return -1; } int main() { printf("%d\n", fac(1)); printf("%d\n", fac(2)); printf("%d\n", fac(9)); return 0; }
輸出結果如下:
漢諾塔問題
將木塊借助 B 柱由 A 柱移動到 C 柱
每次只能移動一個木塊
只能出現小木塊在大木塊之上
漢諾塔問題分解
將 n-1 個木塊借助 C 柱由 A 柱移動到 B 柱
將最底層的唯一木塊直接移動到 C 柱
將 n-1 個木塊借助 A 柱由 B 柱移動到 C 柱
代碼如下:
#include <stdio.h> void han_move(int n, char a, char b, char c) { if( n == 1 ) { printf("%c --> %c\n", a, c); } else { han_move(n-1, a, c, b); han_move(1, a, b, c); han_move(n-1, b, a, c); } } int main() { han_move(3, 'A', 'B', 'C'); return 0; }
輸出結果如下:
關于“C語言遞歸函數如何實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。