递增值的递归函数

Recursive Function With Increasing Values

我正在尝试编写一个递归函数来评估 n

3(2+1)+4(3+2+1)+...+(n+1)(n+...+2+1)

我知道通常我们需要把它写成归纳法,基本情况的结果让我们说 n=1,然后调用 n-1 的函数,这将在基本情况中结束。

但是在下面的函数中元素增加了,我应该怎么处理这个

这也和你说的一般方式一样。就这样看吧:

(n+1)(n + (n-1) + (n-2) + ... + 1) + (n)((n-1) + (n-2) + .. . + 1) + (n-1)((n-2) + (n-3) + ... + 1)

所以假设你有一个名为 SumTo(n) 的函数,它 return 从 1 到 n 的所有数字的总和,这是递归函数:

int Calc(n)
{
   if (n == 3)
     return n(sumTo(2));

   else return n(sumTo(n-1)) * Calc(n-1);
}

您只需要维护您的循环变量和一个计数器,在每次迭代中增加计数器直到它等于 n,从 n = 0 情况(或 1,无论什么)开始。

然后当count == n你有了答案,你就结束了循环。

向上计数而不是向下计数是 corecursion 的特征,前提是每个迭代步骤是 finite(这里肯定是)。