C++ 递归问题

2025-12-17 10:36:47
推荐回答(1个)
回答1:

数学分析是这样:
假设: 本金 (第五年表示a,第四年表示b,第三年表示c,...以此类推),利息 = s , s = 本金*(0.0756)

第五年:a*(1+0.0756) = 1000,也就是说: a = 1000/(1+0.0756)
第四年:b*(1+0.0756) = a +1000 => b = (a+1000)/(1+0.0756)
第三年: c*(1+0.0756) = b + 1000 => c=(b+1000)/(1+0.0756)
第二年: 步骤同上..., d = (c+1000)/(1+0.0756);
第一年: 步骤同上..., e = (d+1000)/(1+0.0756);
最终得到e的值

打个比方:
2000年初 存本金e:
2000年末 取1000,余额 为 e+利息-1000(即为明年本金)
2001年 本金 = e+利息-1000 => 去年本金+利息 = 今年本金+1000

通过C++编程描述数学思路:
递推算法:
const double s = 0.0756;
int main(){
double a = 0;
double sum = 1000; // 第五年的本息
for(int i=5; i>0; i--){
a = sum/(1+s);
sum = a + 1000; // 去年本金+利息 = 今年本金 + 1000
cout << "第" << i << "年的本金:" << a << endl;
}
return 0;
}

递归算法:
const double s = 0.0756;
double test(double sum, int n){
double a;
if(n>0){
a = sum/(1+s);
a = test(a+1000,n-1);
}else{
return sum/(1+s);
}
return a;
}
int main(){
cout << test(1000,5-1) << endl;
return 0;
}