我正在研究一个递归问题,一个孩子可以一次跳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);
}
答案 0 :(得分:3)
这更像是一个逻辑问题。假设你站在那里什么也不做。你爬了几步?答案是零。那么,你成功爬上了零步吗?是。
爬楼梯有多少种方法?只有一种方式:你必须站在那里,不要爬上任何台阶。
答案 1 :(得分:0)
这不是一个真正有效的问题。
因为这是一个递归实现,所以你总是必须为f(nmin)
提供一个边界大小写,其中nmin
比最低有效n
小1。
因此案例n = 0
是一个边界条件,用于确保n > 0
所有值的正确结果。
换句话说,它(可能)并不意味着什么,或者,它可能意味着与你认为的意思不同的东西。它所要做的就是确保f(1)
的正确结果。
不,没有0
方式上升0
楼梯,就像0/0
不等于0
一样。这是一个不确定的结果。