Menu
Coddy logo textTech

再帰の基礎

CoddyのCジャーニー「基礎」セクションの一部。レッスン 50/63。

再帰とは、問題を解決するために関数が自分自身を呼び出す手法です。大きな問題を、より小さくて似た問題に分解して解決するようなものです。

factorial を計算する単純な再帰 function を見てみましょう:

int factorial(int n) {
    // 基底ケース: 0または1の階乗は1
    if (n <= 1) {
        return 1;
    }
    
    // 再帰ケース: n! = n * (n-1)!
    return n * factorial(n - 1);
}

すべての再帰的な function には次が必要です:

  1. 再帰を停止する基底 case
  2. 基底 case に近づいていく再帰的な case

たとえば、factorial(3) を計算する場合:

  • factorial(3) は factorial(2) を呼び出す
  • factorial(2) は factorial(1) を呼び出す
  • factorial(1) は 1 を返す(Base case)
  • factorial(2) は 2 * 1 = 2 を返します
  • factorial(3) は 3 * 2 = 6 を返します
challenge icon

チャレンジ

簡単

sumToNという名前のfunctionを作成し、再帰を使って1からnまでのnumbersの合計を計算してください。

例:

  • sumToN(3)は6 (1 + 2 + 3)をreturnする必要があります
  • sumToN(5)は15 (1 + 2 + 3 + 4 + 5)をreturnする必要があります

あなたのfunctionは次の条件を満たす必要があります:

  1. nが1の場合はBase caseを使用する(return 1)
  2. それ以外の場合は、nに1から(n-1)までのnumbersの合計を加えた値をreturnする

自分で試してみよう

#include <stdio.h>

// ここに sumToN 関数を書いてください

// main() 関数を変更しないでください
int main() {
    int n;
    scanf("%d", &n);
    
    printf("%d", sumToN(n));
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Cオンラインコンパイラ