猿问

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

qq_梦总是美好的_0
浏览 1830回答 1
1回答

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写的, 给你写了大概的思路.
随时随地看视频慕课网APP
我要回答