2017-10-10 13 views
0

私はこの金利計算ツールで再帰を使用しようとしています。今のところ、それはレートと毎月の支払いとそのようなものを印刷しますが、私はそれがユーザーにもっと支払う必要がないまで、(毎月だけでなく)毎月の支払い金額とそれ以外のものを印刷したいと思います。再帰を使ってそれを行う方法はありますか?スカラ:金利計算のための再帰の使用

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) 

答えて

0

毎月の支払いは(多分最後のものを除く)毎月同じであるので、あなたが金額を知っていれば、それは非常に簡単です:

@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) 
    } 
} 
関連する問題