我已經寫了一個java程序來使用線性遞歸在數組中添加元素。獲得的產量與預期不符。任何人都可以指出這個程序有什麼問題嗎?線性遞歸如何工作?
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);
那麼它給出的輸出爲。
「奇怪的是,如果我改變加法的順序,即返回a [count -1] + sum(a);那麼它將輸出結果設爲6.」你爲什麼覺得這很奇怪? – bradimus
我覺得很奇怪,因爲只有通過改變添加順序才能改變輸出。我的意思是2 +3與3 + 2相同。我確定我對遞歸的理解是錯誤的,並試圖找出相同的結論。 – user001
但是你不在這裏添加常量。 'sum(a)'改變'count'的值,從而改變'a [count-1]'。 – bradimus