Измените это:
public static int calc(a[], int g)
На это:
public static int calc(int value, int g)
Когда вы делаете System.out.println(calc(a[0], 11));
, вы фактически передаете int
в функцию calc
.int
находится в первой позиции a[0]
массива.
Если вы хотите передать весь массив в calc
, ваша подпись функции должна быть:
public static int calc(int[] a, int g)
Вы бы назвали это так:
System.out.println(calc(a, 11));
Эта строка System.out.println calc(a[0], 11);
в вашем коде также неверна.Это должно быть:
System.out.println(calc(a[0], 11));
Предположим, что ваша функция calc
имеет это:
public static int calc(int value, int g)
{
return value + g;
}
Когда вы звоните:
System.out.println(calc(a[0], 11));
Выход будет:
17
Почему 17?Поскольку вы суммируете [0] = 6 + 11 = 17.
a[0]
- это строка массива, и вы фактически передаете ее функции calc
.
* 1040.* В рекурсивном случае у вас может быть, например, индексатор
i
.
for(int i = 0; i < a.length; i++)
{
// You could check some condition here:
// if(a[i] > 10) { System.out.println(calc(a[i+1], 11)); }
System.out.println(calc(a[i], 11));
}
Теперь, когда вы выполните этот код, у вас будет такой вывод:
17
18
16
13