月ノ書

<C言語>再帰関数

今回の記事でわかること
  • 再帰関数とは何かが分かる
  • 再帰の使いどころが分かる
  • 実際のコード例が理解できる

再帰関数とは

再帰関数とは「自分自身を呼び出す関数」のことです

例えば数学で「階乗(n!)」を計算するとき

n! = n × (n-1)!

という形で「同じ形の式が繰り返し出てくる」と思います。こういう処理をプログラムで書くときに再帰関数が活躍します

基本構造

再帰関数には大きな特徴が2つあります

これを守らないと、無限ループになってプログラムが止まらなくなります

サンプル:階乗の計算

#include <stdio.h>

// 再帰関数の定義
int factorial(int n) {
    if (n == 0) {   // 終了条件
        return 1;
    } else {
        return n * factorial(n - 1);  // 自分自身を呼び出す
    }
}

int main(void) {
    int num = 5;
    int result = factorial(num);

    printf("%d! = %d\n", num, result);

    return 0;
}

/* 出力結果
5! = 120
*/
処理の流れ
  1. factorial(5) → 5 × factorial(4)
  2. factorial(4) → 4 × factorial(3)
  3. factorial(3) → 3 × factorial(2)
  4. factorial(2) → 2 × factorial(1)
  5. factorial(1) → 1 × factorial(0)
  6. factorial(0) → 1(終了条件!)

ここでようやく答えが返り、積み重なって最終的に 120 が計算されます

使いどころと注意点

使いどころ

注意点

学習進捗

0
Would love your thoughts, please comment.x