首页 > 解决方案 > 具有递增值的递归函数

问题描述

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

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

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

但是在以下功能中元素增加了,我应该如何处理这个

标签: algorithmrecursioniterationcorecursion

解决方案


这也与您提到的一般方式相同。只是这样看:

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

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

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

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

推荐阅读