#c #arrays
Вопрос:
Я новичок в C . Я пытаюсь сделать массив с рекурсией, но постоянно получаю ошибку: «недопустимые типы ‘int[int] для индекса массива». Как мне решить эту проблему?
Это мой код
#include <iostream>
using namespace std;
int array_sum(int a[], int b[])
{
if(a<=0)
return 0;
else
return (array_sum(a, b-1) a[b-1]);
}
int main()
{
int a[] = {4, 2, 2};
int b[] = {4, 3, 2, 8};
cout << array_sum(a, 3) << endl;
cout << array_sum(b, 4) << endl;
}
p/s: любое предложение по улучшению приветствуется
Комментарии:
1. Это выглядит неправильно:
int b[]
, а такжеa <= 0
.2. Вы пытаетесь передать 3 и 4 в int b[].
3. Вы должны думать о коде, который вы пишете. Похоже, вы строите догадки. В
int array_sum(int a[], int b[])
том, является ли a массивомa <= 0
, нет смысла или, по крайней мере, c так не работает. И если b — массивreturn (array_sum(a, b-1) a[b-1]);
, то это не имеет смысла. В этом случаеb
, вероятно, следует назвать лучше и быть просто анint
. А затем в main для второго параметра, объявленного как массив, вы передаете 3 и 4 вместо массива.
Ответ №1:
Учитывая типы, участвующие в следующих:
int a[], int b[]
Затем выражение a[b-1]
индексирует массив другим массивом, что не имеет никакого смысла и напрямую соответствует указанной вами ошибке.