回答編集履歴

2

補足追加

2021/03/29 07:24

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -19,3 +19,47 @@
19
19
 
20
20
 
21
21
  なお「`a[index]`が1である場合1個、そうでなければ0個」というのは`a[index]`の値そのままである。
22
+
23
+
24
+
25
+ これをそのままコードにすると質問文のコードになってます。
26
+
27
+
28
+
29
+ ---
30
+
31
+
32
+
33
+ が、質問文のコードは
34
+
35
+ > その引数は、配列、処理対象となる先頭要素の添字、配列の要素数である。
36
+
37
+
38
+
39
+ という縛りのせいで無駄に複雑になっています。
40
+
41
+
42
+
43
+ 単純に
44
+
45
+ > 0 と 1 だけからなる int 型配列と、その要素数を引数に受け取り、配列に含まれる 1 を数えて返す関数 count1()
46
+
47
+
48
+
49
+ を再起を使って実装するなら、
50
+
51
+
52
+
53
+ ```C
54
+
55
+ int count1(int a[], int n){
56
+
57
+ return n<=0 ? 0 : a[n-1] + count1(a,n-1);
58
+
59
+ }
60
+
61
+ ```
62
+
63
+
64
+
65
+ でいいです。

1

修正

2021/03/29 07:24

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -1,4 +1,4 @@
1
- 「0`,`1` からなる長さ`n`のint型配列aの添字`index`以降の`1`の数の合計」とは
1
+ `0`,`1` からなる長さ`n`のint型配列aの添字`index`以降の`1`の数の合計」とは
2
2
 
3
3
 
4
4