У меня есть эта странная проблема. Я не могу объяснить себе, когда используется короткий, если внутри возврата. Этот код (см. Ниже) должен возвращать значение 55, но вместо этого он просто возвращает аргумент 10, который я передал ему по значению.Возврат внутрь рекурсивной функции не работает, если используется, если используется
Я уже отлаживал функцию, и рекурсия работает по назначению, но никогда не добавляет + 1
к возвращаемому значению.
public static int add(int i) {
return i == 0 ? 0 : add(i - 1) + 1;
}
public static void main(String[] args) {
System.out.println(add(10)); // returns 10
}
Почему это не работает?
Кажется, вы вычитанием 1 из 'i' перед добавлением 1, с' (i - 1) + 1' – JonasCz
Сумма чисел '1 + 2 + 3 + 4 + ... + n' равна' n (n + 1)/2' Вычисление этого было бы намного быстрее. – Obicere
@ Obicere, но тогда это не было упражнением в рекурсии :) –