c++ 递归函数计算给定次数后的存款金额

kq0g1dla  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(135)

问题:给定存款金额sum,利率p和时间段数n,用C++编写一个递归函数来计算n个时间段后的存款总和,假设存款在每个时间段赚取p %的利息,我有代码实现,但我遇到了一个问题,因为我得到的测试数据说存款总和是120,当这些是输入时,输入总和:100输入百分比:10输入时间段:2但是我的代码不能得到120,我的答案只能得到352,如果我去掉“return sum +存款(sum,p,n - 1)”中的sum+;“我得到了121,这是最接近120的答案

int deposit(int sum, int p, int n) {
    if (n == 0) {
        return sum;
    }
    else {
        int interest = sum * p / 100;
        sum += interest;
        return sum + deposit(sum, p, n - 1);
    }
}
l7mqbcuq

l7mqbcuq1#

显然,教授想要简单的,而不是复利,你可以这样做:

#include <iostream>

int deposit(int sum, int p, int n) {
    if (n == 0) {
        return sum;
    }
    else {
        int interest = sum * p / 100;
        return interest+deposit(sum, p, n - 1);
    }
}

int main()
{
    // one to three periods 110,120,130
    std::cout << deposit(100, 10, 1) << '\n';
    std::cout << deposit(100, 10, 2) << '\n';
    std::cout << deposit(100, 10, 3) << '\n';
}

虽然它是递归的,但它也有点奇怪,因为你每次都添加完全相同的利息(简单利息)。这甚至不是递归的教学应用,因为简单的解决方案就是这样:

int deposit(int sum, int p, int n) {
    return sum + sum * n * p / 100;
}

相关问题