递归:n项系列的总和

时间:2015-12-27 13:24:59

标签: algorithm recursion

需要递归功能

系列:1 + 2 * 3 + 3 * 4 * 5 + 4 * 5 * 6 * 7 + ....

递归地查找n的系列之和。我无法想到我应该在函数中传递什么参数。

我的方法

我认为我应该传递n,要增加的术语数量,但我无法想到的是我应该如何+和*在同一个函数中以及我的返回语句是什么?

3 个答案:

答案 0 :(得分:2)

function F(n, nmax, prod): Int
   //prod = (prod div n) * (2 * n) * (2 * n + 1)  simpler:  
   prod = prod * 2 * (2 * n + 1)  
   if n = nmax - 1
      return prod
   else
      return prod + F(n+1, nmax,  prod)

output F(1, 7, 1)

答案 1 :(得分:0)

试试这个:

public static int GetCaluculationProduct(int n)
{
    int result = 1, temp = n;

    if (n == 1)
        return 1;

    for (int i = 0; i < n; i++)
    {
        result *= temp;
        temp++;
    }

    return result + GetCaluculationProduct(n-1);
}

答案 2 :(得分:0)

有2个递归函数:一个用于求和,另一个用于产品。

<强> SUM

public int sum_recurs(int _n)
{
if (_n==1) return 1;

return sum_recurs (_n-1)+ sub_sum_recurs(_n);
}

<强>产品

public int sub_sum_recurs(int _n)
{
if (_n==2) return 2*3;

return sub_sum_recurs(_n-1)/(_n-1)*(2*_n-1)*(2*_n-2);
}

直接公式计算

感谢:https://math.stackexchange.com/questions/1590673/formula-to-calculate-directly-1-2-cdot-3-3-cdot-4-cdot-5-4-cdot-5-c#1590687

enter image description here