Я пытаюсь написать рекурсивный метод, который принимает 3 параметра (сумма кредита, процентная ставка и ежемесячный платеж). Интерес усугубляется ежемесячно. Цель состоит в том, чтобы узнать, сколько месяцев потребуется, чтобы полностью погасить кредит. Вот код, который я до сих пор:Рекурсивный метод расчета кредита
public static double loanLength(double loan, double interest, double payment) {
if (payment > loan + loan * interest) {
return 0;
} else {
double completeLoan = loan + (loan * interest);
double stillOwe = completeLoan - payment;
if (stillOwe <= 0) {
return 1;
} else {
return 1 + (loanLength(stillOwe, interest, payment));
}
}
Примеры ожидаемых доходов включают:
loanLength (1000, 0.10, 200) погашается через 6 месяцев
loanLength (0 , 0,90, 50) составляет 0 месяцев
Но мои доходы выглядеть следующим образом:
loanLength (1000, 0,10, 200): 7 месяцев
loanLength (0, 0,90, 50): 0 месяцев
Мой второй тест работает нормально, но мой первый один только 1 целое число выше что это должно быть. Я не могу понять, почему. Любая помощь приветствуется.
Я не думаю, что это лучший случай для рекурсии. Цикл будет намного легче читать (и писать). Пропуская тот факт, что этот расчет может быть выполнен в одном выражении. Это просто упражнение для практики рекурсии? –
Именование ваших параметров сделает код читаемым !!!! – Andreas
@JaroslawPawlak Это должно быть сделано рекурсивно для практики. Я мог бы легко сделать это в форме цикла, но я определенно борюсь с рекурсией. –