Scala:使用递归作为利率计算器



我正在尝试在这个利率计算器上使用递归。现在它打印费率和每月付款之类的东西,但我希望它打印每个月(不仅仅是总数)的付款金额和其他所有内容,直到用户不必支付更多。有没有办法使用递归来做到这一点?

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)
  }
}

最新更新