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 при продолжении вызова функции). В конечном счете это сводится к (((((((((0 + 1) +2) +3) +4) +5) +6) +7) +8) +9) +10). (Правильно ли я скопировал скобки?;)) –