PROG 9.4 (長さMの配列要素の合計を再帰関数で)

問題

[実行例]

array:1 2 3 4 5 6 7 8 9 10

sum = 55

[コメント]
  • printf("total = %d\n", 関数の呼び出し)
  • 配列は大域変数(グローバル変数)としよう。
  • 再帰的プログラムは停止条件と再帰条件。言葉で語ろう。
    • ずばり、答えが決まる場合は、どんな場合
    • N - 1の場合の解がわかっているとすると、Nの場合の解は...
[関連の例題]
例題集ページ
  • 0401 (配列要素にループ処理)(要素の合計)
  • 0901 (再帰の基本)(階乗)
  • 0802 (配列を関数の引数にするなら) (要素の合計、関数)
  • 配列を大域変数でアクセスするのではなく、関数の引数にする場合の例題

[プログラムテンプレート(未完)]

#include <stdio.h>

#define M 10

int array[M] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int add(int len);   /* 関数テンプレート。型以外も宣言しておく例 引数はint 名前はlen */

int main(void) {
    int i;

    printf("array:");
    for (i = 0; i < M; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");
    printf("\n");

    printf("sum = %d\n", add(M));  /* 関数 addの戻り値をプリント */

    return (0);
}


/* 自分より前を合計。長さがだんだん小さくなる */
int add(int len) {
    if (  
        return 
    } else {          
        return (
    }
}