iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

c 語言與 python 的30天之旅系列 第 16

C 語言之遞迴呼叫(Recursion )

  • 分享至 

  • xImage
  •  

C 中的遞歸是一種程式設計技術,函數直接或間接呼叫自己來解決問題。這種方法對於可以自然分解為更小的、自相似子問題的問題特別有用。

C 中的遞歸函數通常由兩個主要部分組成:

  • 基本情況:這是遞迴的終止條件。它定義函式何時應該停止呼叫本身,並傳回結果,而不進行進一步的遞迴呼叫。如果沒有明確定義的基本情況,遞歸函數將導致無限遞歸和堆疊溢位。
  • 遞歸情況:這部分定義了函數使用修改後的參數呼叫自己的邏輯。參數通常會以使問題更接近基本情況的方式進行更改。

遞歸如何運作?
若要瞭解遞迴在內部的工作原理,請務必查看呼叫堆疊在遞迴呼叫期間的行為方式。每次函數呼叫自己時,目前狀態都會儲存在堆疊上,並開始新的呼叫。一旦達到基本情況,函數就會開始傳回,一次一次呼叫一次。
下列範例示範遞減階段 (深入遞迴) 和遞增階段 (從遞迴返回):

#include <stdio.h>

void f(int n) {
    printf("F(%d)'s Stack Frame Pushed\n", n);

    if (n > 1) {
        f(n - 1);
        f(n - 1);
    }

    printf("F(%d)'s Stack Frame Removed\n", n);
}

int main() {
    f(3);
    return 0;
}

上一篇
C 語言與紅黑樹(Red Black Tree)
下一篇
C 語言與狀態機
系列文
c 語言與 python 的30天之旅17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言