再帰の基礎
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 には次が必要です:
- 再帰を停止する基底 case
- 基底 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 を返します
チャレンジ
簡単sumToNという名前のfunctionを作成し、再帰を使って1からnまでのnumbersの合計を計算してください。
例:
sumToN(3)は6 (1 + 2 + 3)をreturnする必要がありますsumToN(5)は15 (1 + 2 + 3 + 4 + 5)をreturnする必要があります
あなたのfunctionは次の条件を満たす必要があります:
- nが1の場合はBase caseを使用する(return 1)
- それ以外の場合は、nに1から(n-1)までのnumbersの合計を加えた値をreturnする
自分で試してみよう
#include <stdio.h>
// ここに sumToN 関数を書いてください
// main() 関数を変更しないでください
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ