C 再帰
C 再帰
このチュートリアルでは、例を使用して C プログラミングで再帰関数を作成する方法を学習します。
自分自身を呼び出す関数は、再帰関数と呼ばれます。そして、この手法は再帰として知られています。
再帰の仕組み
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }<図>
再帰は、再帰を防ぐための条件が満たされるまで続きます。
無限再帰を防ぐために、if...else ステートメント (または同様のアプローチ) を使用して、1 つのブランチが再帰呼び出しを行い、他のブランチがそうでない場合に使用できます。
例:再帰を使用した自然数の和
#include <stdio.h>
int sum(int n);
int main() {
int number, result;
printf("Enter a positive integer: ");
scanf("%d", &number);
result = sum(number);
printf("sum = %d", result);
return 0;
}
int sum(int n) {
if (n != 0)
// sum() function calls itself
return n + sum(n-1);
else
return n;
}
出力
Enter a positive integer:3 sum = 6
最初は sum()
main()
から呼び出されます number の関数 引数として渡されます。
n の値を sum()
内 最初は 3 です。次の関数呼び出し中に、2 が sum()
に渡されます 関数。このプロセスは n まで続きます は 0 です。
nの場合 0、if
に等しい 条件が失敗し、else
部分が実行され、整数の合計が最終的に main()
に返されます 関数。
再帰の利点と欠点
再帰はプログラムをエレガントにします。ただし、再帰は通常非常に遅いため、パフォーマンスが重要な場合は、代わりにループを使用してください。
そうは言っても、再帰は重要な概念です。これは、データ構造とアルゴリズムで頻繁に使用されます。たとえば、ツリー トラバーサルなどの問題では再帰を使用するのが一般的です。
C言語