C语言中p=(1 r) n,如何计算p=c/(1+r)+c/(1+r)*(1+r)+........+c/(1+r)的n次方+m/(1+r)的n次方

89ed4ba8658bff88e3bce0dbeb52b344.png

littleOStar

/*

* 计算 p = c/(1+r) + c/(1+r)*(1+r) + …… c/(1+r)的n次方, n 暂定为50

*

* <1>假设  t = (1+r)

* 结果 p = c/t + c/t*t + …… + c/t的50次方

*

* <2>提取出c

* 结果 p = c * (1/t + 1/t*t + …… + 1/t的50次方)

*

* <3>假设  x = (1/t)  ==>  x = 1/(1+r)

* 结果 p = c * (x + x*x + …… + x的50次方)

*

* <4>简单分析下

* 只需计算 (x + x*x + …… + x的50次方)

*

* x

* = x// n=1的情况

*

* x + x*x

* = x*(1 + x)// n=2的情况

*

* x + x*x + x*x*x

* = x*(1 + x + x*x)

* = x*(1 + x*(1 + x))// n=3的情况

*

* x + x*x + x*x*x + x*x*x*x

* = x*(1 + x + x*x + x*x*x)

* = x*(1 + x*(1 + x + x*x))

* = x*(1 + x*(1 + x*(1 + x)))// n=4的情况

*

* // 总结:

* // n>=2时, n的结果总是等于(n-1)的结果加上1后, 再乘以x

*// n=50, 则需要计算 50-2=48 次

*

*/

double r = 4; // 假设 r = 4

double x = 1/(1+r); // 方便计算的  x

double c = 10; // 假设 c = 10

int n = 50; // 次方数, 多少次方

double p = 0; // 最终结果

double temp = x + x*x; // n=2时,

double sum = 0; // x的阶乘结果

for (int i = 1; i <= (n-2); i++) {

sum = (temp + 1)*x;

}

p = c * sum;

System.out.println("p=" + p);// 抱歉哈, 我用Java写的, 给你写了大概的思路.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值