首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学公式

数学公式
EN

Stack Overflow用户
提问于 2019-05-10 05:37:20
回答 4查看 57关注 0票数 1

我必须构建一个序列,比如

代码语言:javascript
复制
(amount-(amount/36*1)) + 
(amount-(amount/36*1 + amount-amount/36*2)) + 
(amount-(amount/36*1 + (amount-amount/36*2) + (amount-amount/36*3))) +
(amount-(amount/36*1 + (amount-amount/36*2) + (amount-amount/36*3) + (amount-amount/36*4))) + 
...
(amount-(amount/36*1 + (amount-amount/36*2) + (amount-amount/36*3) + (amount-amount/36*4) + ... + (amount-amount/36*n)))

其中n是一个值,我将根据事件发生后经过了多少个日历月来单独计算。公式应该按照上面的方式进行,直到满足n的值。

我想不出如何迭代才能构建公式

EN

回答 4

Stack Overflow用户

发布于 2019-05-10 06:02:01

如果我正确理解了这个公式,这应该是有效的calc(amount, 0, 1, n)

代码语言:javascript
复制
public double calc(double amount, double sum, int curr, int n) {
       if (curr > n) return 0;
        sum += (amount - amount / 36 * curr);
        return sum + calc(amount, sum, curr + 1, n);
    }
票数 0
EN

Stack Overflow用户

发布于 2019-05-10 06:02:11

你可能想要使用递归,不确定这是否是你想要的正确的东西。也许你可以从下面的解决方案中得到一个想法,然后自己去做。

代码语言:javascript
复制
public double calculate(double amount, int N){
  double total = 0;
  if(N==0){
    return total;
  }
  for(int i=1;i<=N;i++){
    total + = (amount - amount/(36*i));
  }
  return calculate(amount, N-1) + total;
}
票数 0
EN

Stack Overflow用户

发布于 2019-05-10 06:18:45

下面的recursive公式应该可以做到这一点(即使你可能应该复习一下这些操作,因为我并不是真的从你放的括号中得到它们):

代码语言:javascript
复制
private static double sumUpToN(double amount, int n) {
    double result = amount;
    for (int j = 1; j <= n; j++) {
        result += (amount - amount/36*j);
    }
    return n > 0 ? result + sumUpToN(amount, n-1) : result;
}

您可以这样命名您的公式:

代码语言:javascript
复制
double test = sumUpToN(100, 3);

将会发生以下情况:

n == 3开始

它计算result = 100 + (100-100/36*1) + (100-100/36*2) + (100-100/36*3) = 383.33333333333337,然后获取这个值,并将其相加到:

转到n == 2

它计算result = 100 + (100-100/36*1) + (100-100/36*2) = 291.6666666666667,然后获取这个值,并将其相加到:

转到n == 1

它计算result = 100 + (100-100/36*1) = 197.22222222222223,然后获取这个值,并将其相加到:

转到n == 0

它只返回100。如果您不希望最后这一步发生,请将return条件从n > 0更改为n > 1

返回结果

所有这些(972.2222222222223)的总和应该是您要搜索的公式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56067934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档