gpt4 book ai didi

java - 贷款计算的递归方法

转载 作者:行者123 更新时间:2023-12-01 22:00:21 24 4
gpt4 key购买 nike

我正在尝试编写一个带有 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 个月

但我的返回看起来像:

贷款长度(1000, 0.10, 200):7个月

loanLength(0, 0.90, 50):0 个月

我的第二个测试工作正常,但我的第一个测试仅比应有的值高 1 个整数。我不明白为什么。如有任何帮助,我们将不胜感激。

最佳答案

public static int loanLength(double loan, double interestAPR, double payment) {
if (loan <= 0) {
return 0;
}
double monthlyInterest = interestAPR / (12 * 100);
double compounded = loan * (1 + monthlyInterest);
return 1 + loanLength(compounded - payment, interestAPR, payment);
}

public static void main(String[] args) {
System.out.println(loanLength(0, 0.90, 50)); // 0
System.out.println(loanLength(1000, 10.0, 200)); // 6
System.out.println(loanLength(1000, 0.1, 200)); // 6 (FWIW)
}

请注意,利息年利率按原样表示,即年利率 10% 的 10,000 美元贷款和每月 500 美元的付款计算如下

loanLength(10000, 10.0, 500);

如果 0.10 = 10% APR,则更改此行

double monthlyInterest = interestAPR / 12;

关于java - 贷款计算的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com