在这里理解递归

时间:2012-10-01 01:21:46

标签: recursion

我正在研究一个递归问题,一个孩子可以一次跳1,2或3步的阶梯n。 我正在看的代码是类似于斐波纳契的函数。然而,我没有得到的是,如果n == 0为什么它会返回1.如果步数总和为0,那么攀爬它的方法是否应该为零?为什么有一种方法可以攀爬它?

int f(int n)
{
if(n<0)
return 0;
else if(n==0)
return 1;
else 
return f(n-1) + f(n-2) + f(n-3);
}

2 个答案:

答案 0 :(得分:3)

这更像是一个逻辑问题。假设你站在那里什么也不做。你爬了几步?答案是零。那么,你成功爬上了零步吗?是。

爬楼梯有多少种方法?只有一种方式:你必须站在那里,不要爬上任何台阶。

答案 1 :(得分:0)

这不是一个真正有效的问题。

因为这是一个递归实现,所以你总是必须为f(nmin)提供一个边界大小写,其中nmin比最低有效n小1。

因此案例n = 0是一个边界条件,用于确保n > 0所有值的正确结果。

换句话说,它(可能)并不意味着什么,或者,它可能意味着与你认为的意思不同的东西。它所要做的就是确保f(1)的正确结果。

不,没有0方式上升0楼梯,就像0/0不等于0一样。这是一个不确定的结果。