递归中的锚案例定义

时间:2017-10-11 23:48:22

标签: c++ recursion anchor

锚案例定义如下:

  

为参数的一个或多个值指定函数的值。

现在让我们来看看递归因子函数:

int fact(int n)
{
   if (n == 0)
      return 1;
   else
      return n * fact(n - 1);
}

我理解这一点:“指定了函数的值......” 我明白了;当函数到达锚案例时,它只返回1.

我不明白的是,函数的值是如何“为参数的一个或多个值指定的”?

定义是关于函数参数还是参数的数学术语?我只是没有看到弹出运行时堆栈时为[function]参​​数的一个或多个值指定了函数的值。

2 个答案:

答案 0 :(得分:0)

某些递归函数有多个基本案例。例如,Fibonacci序列具有输入01的指定值,并递归以获得更高的值。

unsigned int fib(unsigned n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return fib(n-1) + fib(n-2);
    }
}

答案 1 :(得分:0)

这是指功能参数。这是函数的静态属性;它与运行时的瞬态状态无关。 "当运行时堆栈弹出时#34;不是问题。

这个概念是每次递归都必须让我们更接近答案。这意味着在调用树的底部必须有一个绝对(非递归)值。答案就是锚案。

某些进程只有一个锚点。斐波那契有两个。有些人有更多,取决于"底部"是针对那个特定的过程。