需要递归功能
系列:1 + 2 * 3 + 3 * 4 * 5 + 4 * 5 * 6 * 7 + ....
递归地查找n的系列之和。我无法想到我应该在函数中传递什么参数。
我的方法
我认为我应该传递n,要增加的术语数量,但我无法想到的是我应该如何+和*在同一个函数中以及我的返回语句是什么?
答案 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);
}
直接公式计算