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写的, 给你写了大概的思路.