锚案例定义如下:
为参数的一个或多个值指定函数的值。
现在让我们来看看递归因子函数:
int fact(int n)
{
if (n == 0)
return 1;
else
return n * fact(n - 1);
}
我理解这一点:“指定了函数的值......” 我明白了;当函数到达锚案例时,它只返回1.
我不明白的是,函数的值是如何“为参数的一个或多个值指定的”?
定义是关于函数参数还是参数的数学术语?我只是没有看到弹出运行时堆栈时为[function]参数的一个或多个值指定了函数的值。
答案 0 :(得分:0)
某些递归函数有多个基本案例。例如,Fibonacci序列具有输入0
和1
的指定值,并递归以获得更高的值。
unsigned int fib(unsigned n) {
if (n == 0 || n == 1) {
return 1;
} else {
return fib(n-1) + fib(n-2);
}
}
答案 1 :(得分:0)
这是指功能参数。这是函数的静态属性;它与运行时的瞬态状态无关。 "当运行时堆栈弹出时#34;不是问题。
这个概念是每次递归都必须让我们更接近答案。这意味着在调用树的底部必须有一个绝对(非递归)值。答案就是锚案。
某些进程只有一个锚点。斐波那契有两个。有些人有更多,取决于"底部"是针对那个特定的过程。