Я написал программу java для добавления элементов в массив с использованием Linear Recursion. Полученный результат не соответствует ожиданиям. Может ли кто-нибудь указать, что не так с этой программой?Как работает линейная рекурсия?
public class TestSum {
public int count = 0;
public int sum(int[] a){
count++;
if(a.length == count){
return a[count -1];
}
return sum(a) + a[count -1] ;
}
public static void main(String[] args) {
int[] a = {1,2,3};
int val = new TestSum().sum(a);
System.out.println(val);
}
}
Я ожидаю выход как 6, но полученный . Что не так?
Странно, если я изменяю порядок добавления, то есть return a[count -1] + sum(a);
, тогда он дает выходные данные как .
«Как ни странно, если я изменю порядок добавления, верните [count -1] + sum (a), а затем выдаст результат как 6." Почему ты находишь это странным? – bradimus
Мне кажется странным, что выход изменяется только путем изменения порядка сложения. Я имею в виду, что 2 +3 совпадает с 3 + 2. Я уверен, что мое понимание о рекурсии неверно и пытается понять то же самое. – user001
Но вы не добавляете константы здесь. 'sum (a)' изменяет значение 'count' и, таким образом, изменяет' a [count-1] '. – bradimus