-1

我正在研究一个递归问题,其中一个孩子可以一次以 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);
}
4

2 回答 2

3

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

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

于 2012-10-01T01:25:40.430 回答
0

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

因为这是一个递归实现,所以您总是必须提供一个边界情况,f(nmin)即 where nminis 1 小于最低的 valid n

所以这种情况n = 0是一个边界条件,用于确保所有值的正确结果n > 0

换句话说,它(可能)没有任何意义,或者,它可能意味着与你认为的不同的东西。它所要做的就是确保f(1).

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

于 2012-10-01T01:42:07.220 回答