Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 再帰 | いくつかの高度なトピック
C++関数

再帰

メニューを表示するにはスワイプしてください

プログラミングにおける再帰は、関数が自分自身を呼び出して同じ問題のより小さなインスタンスを解決する手法。これは、同じ種類のより小さな部分問題に分割できる問題を解決するための強力かつ洗練された方法。

再帰関数は通常、2つの要素から構成される:

  • 基本ケース:再帰関数の終了条件を定義。基本ケースに到達すると、関数は呼び出しを停止し、特定の値を返す。無限再帰を防ぐために必要。

  • 再帰ケース:問題をより小さな部分問題に分割し、入力を減らして関数を再帰的に呼び出すロジックを定義。再帰ケースによって関数は基本ケースに向かって進行する。

Note
ノート

factorial of a number n is defined as follows:

n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!

main.cpp

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; }

基本ケース:基本ケースは、入力 n0 または 1 の場合です。この場合、階乗は 1 と定義されます。基本ケースは再帰が終了することを保証し、無限再帰を防ぎます。

再帰ケース:再帰ケースは、nn より大きい場合に 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 になります。
question mark

この章で作成した factorial() 関数に入力3を与えた場合の出力は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  3
some-alt