2017-10-10 3 views
0

Je tente d'utiliser la récursivité sur ce calculateur de taux d'intérêt. À l'heure actuelle, il imprime le taux et les paiements mensuels et autres, mais je veux imprimer les montants de paiement et tout le reste pour chaque mois (pas seulement le total) jusqu'à ce que l'utilisateur n'a pas à payer plus. Y at-il un moyen de le faire en utilisant la récursivité?Scala: utilisation de la récursivité pour un calculateur de taux d'intérêt

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) 

Répondre

0

paiement mensuel est le même chaque mois (sauf, peut-être le dernier), donc, si vous connaissez le montant, il est assez trivial:

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