n = 10
10+9+8+7+6+5+4+3+2+1 = 55
這裏是一段代碼,將從n開始的數字添加到之前的每個數字。需要幫助瞭解遞歸
public static int recursion(int index){
if (index == 0){
return 0;
}
else{
return recursion(index-1) + index;
}
}
抱歉愚蠢的問題,但在這裏就是讓我困惑:當指數不爲零,它調用遞歸函數再次,與1中減去,依此類推,直到該指數爲零的索引。但是,它是編碼遞歸(索引-1)+索引。
那麼爲什麼索引每次調用函數時都不會被1減去並且加上10(或任何索引號)?爲什麼它不是這樣的:(10+(9 + 10)+(8 + 10)+(7 + 10)+ ....)?
'index'是'recursion'函數的局部變量,因此在當前遞歸(遞歸調用)開始時它總是有你傳入的值。這不是實際上有助於最終結果的「遞歸(索引-1)」;它是'+ index'部分(當你繼續調用函數時,它保持從10遞減到0)。最終歸結爲(((((((+ 1)+2)+3)+4)+5)+6)+7)+8)+9)+10)。 (我是否正確地計算括號?)) – 2014-10-05 16:34:42