C++ 再帰
C++ 再帰
このチュートリアルでは、C++ の再帰関数とその動作について例を使って学びます。
自分自身を呼び出す関数は、再帰関数と呼ばれます。そして、この手法は再帰として知られています。
C++ での再帰の働き
void recurse()
{
... .. ...
recurse();
... .. ...
}
int main()
{
... .. ...
recurse();
... .. ...
}
下の図は、再帰が自分自身を何度も呼び出すことによってどのように機能するかを示しています。
<図>再帰は、何らかの条件が満たされるまで続きます。
無限再帰を防ぐには、if...else ステートメント (または同様のアプローチ) を使用して、1 つのブランチが再帰呼び出しを行い、もう 1 つのブランチがそうでない場合に使用できます。
例 1:再帰を使用した数値の階乗
// Factorial of n = 1*2*3*...*n
#include <iostream>
using namespace std;
int factorial(int);
int main() {
int n, result;
cout << "Enter a non-negative number: ";
cin >> n;
result = factorial(n);
cout << "Factorial of " << n << " = " << result;
return 0;
}
int factorial(int n) {
if (n > 1) {
return n * factorial(n - 1);
} else {
return 1;
}
}
出力
Enter a non-negative number: 4 Factorial of 4 = 24
階乗計画の働き
<図>
ご覧のとおり、factorial()
関数は自分自身を呼び出しています。ただし、呼び出しごとに n の値を減らしました 1
まで . nの場合 1
未満です 、factorial()
関数は最終的に出力を返します。
再帰の長所と短所
以下は、C++ で再帰を使用することの長所と短所です。
C++ 再帰の利点
- これにより、コードが短くなり、すっきりします。
- グラフやツリー トラバーサルなど、データ構造や高度なアルゴリズムに関する問題では、再帰が必要です。
C++ 再帰の欠点
- 反復プログラムと比較して、多くのスタック スペースが必要です。
- より多くのプロセッサ時間を使用します。
- 同等の反復プログラムに比べてデバッグが難しい場合があります。
C言語