【C言語】再帰関数を使って配列の合計値を計算する方法を解説

再帰関数を使うことで、繰り返し処理を簡潔に表現することができます。

この記事では、再帰関数を使って配列の合計値を計算する方法について解説します。

目次から探す

再帰関数を使って配列の合計値を計算する方法

再帰関数とは、自分自身を呼び出す関数のことです。

再帰関数を使うことで、複雑な処理を簡潔に表現することができます。

再帰関数の基本構造

再帰関数は、自分自身を呼び出すことで処理を繰り返す仕組みです。

以下に再帰関数の基本構造を示します。

戻り値の型 関数名(引数) {
    // ベースケース(再帰を終了する条件)
    if (ベースケース) {
        return ベースケースの値;
    }
    
    // 再帰呼び出し
    return 再帰関数(引数を更新した値) + その他の処理;
}

配列の合計値を再帰関数で計算する方法

配列の合計値を再帰関数で計算するには、以下の手順を踏みます。

  1. ベースケースとして、配列の要素数が0の場合、合計値は0として処理を終了します。
  2. 配列の先頭の要素を合計値に加えます。
  3. 配列の先頭の要素を削除した新しい配列を作成します。
  4. 新しい配列を引数として再帰関数を呼び出し、合計値を再帰的に計算します。
  5. 合計値を返します。

以下に、配列の合計値を再帰関数で計算するサンプルコードを示します。

#include <stdio.h>
int sumArray(int arr[], int size) {
    // ベースケース
    if (size == 0) {
        return 0;
    }
    
    // 先頭の要素を合計値に加える
    int sum = arr[0];
    
    // 先頭の要素を削除した新しい配列を作成
    int newArr[size - 1];
    for (int i = 0; i < size - 1; i++) {
        newArr[i] = arr[i + 1];
    }
    
    // 再帰呼び出し
    return sum + sumArray(newArr, size - 1);
}
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    int result = sumArray(arr, size);
    
    printf("配列の合計値: %d\n", result);
    
    return 0;
}

上記のコードでは、配列 {1, 2, 3, 4, 5} の合計値を再帰関数 sumArray を使って計算しています。

実行結果は以下の通りです。

配列の合計値: 15

目次から探す