目次から探す
再帰を使った方法
再帰を使った方法は、自身の関数を呼び出すことで問題を解決する手法です。
再帰関数は、関数内で自身の関数を呼び出すことで、同じ処理を繰り返し行います。
再帰関数の定義
再帰関数を定義するには、以下のような形式で関数を作成します。
戻り値の型 関数名(引数の型 引数)
{
// ベースケース(再帰を終了する条件)の処理
if (ベースケース) {
return ベースケースの値;
}
// 再帰呼び出しの処理
return 再帰関数名(引数の値) + 再帰関数名(引数の値);
}
再帰関数の定義では、まずベースケースと呼ばれる再帰を終了する条件を設定します。
ベースケースが満たされた場合、再帰関数はその時点で終了し、結果を返します。
再帰呼び出しの処理では、再帰関数自身を呼び出すことで同じ処理を繰り返します。
引数の値は、再帰呼び出しのたびに変化させることで、問題を解決していきます。
再帰関数の利用方法
再帰関数を使って1からnまでの和を求める例を示します。
#include <stdio.h>
int sum(int n)
{
// ベースケースの処理
if (n == 1) {
return 1;
}
// 再帰呼び出しの処理
return n + sum(n - 1);
}
int main()
{
int n = 5;
int result = sum(n);
printf("1から%dまでの和は%dです。\n", n, result);
return 0;
}
上記のコードでは、再帰関数sum
を定義しています。
sum
関数は引数として整数n
を受け取り、1からnまでの和を返します。
sum
関数内では、まずベースケースとしてn
が1の場合、1を返します。
それ以外の場合は、n
と sum(n - 1)
の和を返します。
このように再帰呼び出しを行うことで、1からnまでの和を求めることができます。
メイン関数では、n
に5を代入し、sum
関数を呼び出して結果を表示しています。
実行結果は以下のようになります。
1から5までの和は15です。
再帰を使った方法は、問題を分割して解くことができるため、柔軟な処理が可能です。
しかし、再帰関数の呼び出しが多くなると処理時間が増える場合があるため、注意が必要です。
次のページ等差数列の和の公式を使った方法