我正在尝试在这个利率计算器上使用递归。现在它打印费率和每月付款之类的东西,但我希望它打印每个月(不仅仅是总数)的付款金额和其他所有内容,直到用户不必支付更多。有没有办法使用递归来做到这一点?
import io.StdIn._
println("Enter the house loan ammount: ")
val loan = readInt()
println("Enter the number of years you want to take to pay off the loan: ")
val years = readInt()
println("Enter the annual interest rate")
val interestRate = readInt()
val monthlyPayment = (loan*(interestRate/12))/(1-
(1+interestRate/12)^years*12)
val totalPayment = monthlyPayment*years*12
def monthlyPayment2(monthlyPayment:Int):Unit = {
if (monthlyPayment>0){
println(monthlyPayment)
monthlyPayment2((loan*(interestRate/12))/(1-(1+interestRate/12)^years*12))
}
}
println ("The monthly payment is:"+monthlyPayment)
println("The total payment is:" + totalPayment)
每月付款每个月都是一样的(也许最后一个除外),所以,如果你知道金额,那就太微不足道了:
@tailrec
final def printMonthly(
principal: Double,
amount: Double,
month: Int = 1
): Unit = {
val paid = amount*(month-1)
val left = principal - paid
if(left <= amount) {
println(s"$month: Payment: $left, Total: $principal, Remaining: 0")
} else {
println(
s"$month: Payment: $amount, Total: ${paid + amount}, Remaining: ${left-amount}"
)
printMonthly(principal, amount, month+1)
}
}