「0 と 1 だけからなる int 型配列と、その要素数を引数に受け取り、配列に含まれる 1 を数えて返す関数 count1() があるとき、その処理を行う再帰関数count1r() を作れ。その引数は、配列、処理対象となる先頭要素の添字、配
列の要素数である。」という条件のプログラムを作ります。
以下、コードになります。
#include <stdio.h> #define SIZE 8 int count1r(int a[], int index, int n){ if(index >= n){ return 0; }else{ return a[index] + count1r(a, index+1, n); } } int count1(int a[], int n){ return count1r(a, 0, n); } int main(void){ int bits[SIZE] = { 0, 1, 0, 0, 1, 0, 1, 1 }; printf("%d\n", count1(bits, SIZE)); return 0; }
質問事項
・最初の関数のif文はどういう処理を行っているのでしょうか。
私の解釈ですと、範囲外に行ったら「0」を返す。elseの部分は、あいまいです。
宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー