C言語再帰のマスター:ベストプラクティスと終了条件
再帰とは、自己相似的な形で項目を繰り返すプロセスです。プログラミング言語において、関数が自分自身を呼び出せる場合、それをその関数の再帰呼び出しと呼びます。
void recursion() {
recursion(); /* 関数が自分自身を呼び出す */
}
int main() {
recursion();
}
C言語は再帰をサポートしています。しかし再帰を使う際、プログラマは関数から抜ける終了条件を慎重に定義する必要があります。そうしないと無限ループに陥ります。
再帰関数は、数値の階乗計算やフィボナッチ数列生成など、多くの数学的問題の解決に役立ちます。
数値の階乗
再帰関数を使って与えられた数の階乗を計算する例です。
#include <stdio.h>
unsigned long long int factorial(unsigned int i) {
if (i <= 1) {
return 1;
}
return i * factorial(i - 1);
}
int main() {
int i = 12;
printf("Factorial of %d is %llu\n", i, factorial(i));
return 0;
}
実行結果:
Factorial of 12 is 479001600
フィボナッチ数列
再帰関数でフィボナッチ数列を生成する例です。
#include <stdio.h>
int fibonacci(int i) {
if (i == 0) {
return 0;
}
if (i == 1) {
return 1;
}
return fibonacci(i - 1) + fibonacci(i - 2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%d\n", fibonacci(i));
}
return 0;
}
実行結果:
0 1 1 2 3 5 8 13 21 34
C言語
- C# Hello World – 初めてのC#アプリケーション構築
- C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
- C# 変数とプリミティブデータ型:完全マスターガイド
- C#演算子完全ガイド:C#における演算子の包括的解説
- C# ビット演算子とビットシフト演算子をマスターする:包括的ガイド
- C# 入出力の基礎:ユーザー入力と出力の基本をマスター
- C# の式、文、ブロック:実践例で徹底理解
- C# コメントをマスターする:種類、ベストプラクティス、XML ドキュメント
- C# break 文:使い方とタイミングを徹底解説
- C# continue 文をマスターする:ループ反復を効果的にスキップする方法
- C# 配列をマスターする:宣言、初期化、操作