public class a1 {
private static int unit = 0;
private static int sum = 0;
public static void main(String[] foo) {
unit = 10;
System.out.println(tailRecur(unit));
System.out.println(tailRecur2(10));
}
public static int tailRecur(int result) {
int sum = result + unit - 1;
unit = unit - 1;
if (unit == 0) {
return sum;
}
return tailRecur(sum);
}
public static int tailRecur2(int unit) {
if (unit == 0) return sum;
sum = sum + unit;
return tailRecur2(unit - 1);
}
}
Я написал простой метод для достижения 1 + ... + 10. Я не уверен, какой из них может быть лучше со значением синтаксиса рекурсии. Все дают мне правильный ответ.Рекурсия в java, которая может быть лучшей?
функция вызывает себя, что это единственное определение рекурсии, так что это, кажется, основано мнение вопрос –
я бы сказал, что ни один не верный. Они не должны использовать статическое поле. – Andreas
Кроме того, на Java нет разумных реализаций. При достаточно больших значениях 'unit' вы получите StackOverflowError. (Но это, вероятно, «урок №2») –