我想寫一個需要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這是爲了練習遞歸地完成的。我可以很容易地以循環的形式做到這一點,但我肯定會在遞歸方面掙扎。 –