我想写一个需要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):10个月
loanLength(0,0.90,50):0个月
我的第二测试工作正常,但我的第一个是上面刚刚1整数它应该是什么。我无法弄清楚为什么。任何帮助表示赞赏。
我不认为这是递归的最佳情况。循环会更容易阅读(和写)。跳过这个计算可以在单个表达式中完成的事实。这只是练习递归练习吗? –
命名参数将使代码可读! – Andreas
@JaroslawPawlak这是为了练习递归地完成的。我可以很容易地以循环的形式做到这一点,但我肯定会在递归方面挣扎。 –