再帰
メニューを表示するにはスワイプしてください
プログラミングにおける再帰は、関数が自分自身を呼び出して同じ問題のより小さなインスタンスを解決する手法を指します。これは、同じ種類のより小さな部分問題に分割できる問題を解決するための強力で洗練された方法です。
再帰関数は通常、2つの要素で構成されます:
-
基本ケース: 再帰関数の終了条件を定義します。基本ケースに到達すると、関数は呼び出しを停止し、特定の値を返します。これは無限再帰を防ぐために必要です。
-
再帰ケース: 問題をより小さな部分問題に分割し、入力を減らして関数を再帰的に呼び出すロジックを定義します。再帰ケースによって、関数は基本ケースに向かって進行します。
ノート
n の階乗は次のように定義されます:
n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!
main.cpp
12345678910111213141516171819#include <iostream> // Function to calculate factorial int factorial(int n) { // Base case: factorial of 0 or 1 is 1 if (n == 0 || n == 1) return 1; // Recursive case: multiply n with factorial of (n-1) std::cout << "Recursive Case: " << n << " * factorial(" << n - 1 << ")" << std::endl; return n * factorial(n - 1); } int main() { // Call the function std::cout << factorial(5) << std::endl; }
基本ケース:基本ケースは、入力 n が 0 または 1 の場合です。この場合、階乗は 1 と定義されます。基本ケースは再帰が終了することを保証し、無限再帰を防ぎます。
再帰ケース:再帰ケースは、n が n より大きい場合に 1 の階乗を計算するロジックです。これは、引数として n - 1 を使って階乗関数を再帰的に呼び出し、その結果に n を掛ける処理です。これにより、より小さい数の階乗を計算することで問題を小さなサブプロブレムに分割します。
関数を引数5で呼び出す 手順は以下の通りです:
factorial(5)はfactorial(4)を呼び出し、その結果に 5 を掛けます。factorial(4)はfactorial(3)を呼び出し、その結果に 4 を掛けます。factorial(3)はfactorial(2)を呼び出し、その結果に 3 を掛けます。factorial(2)はfactorial(1)を呼び出し、その結果に 2 を掛けます。factorial(1)は基本ケースであり、1 を返します。- 掛け算はチェーンを遡って続き、最終的に
5の階乗は120となります。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 4. 章 3