楼梯问题 - 不同条件下不同的基本情况

问题描述 投票:0回答:1

这个问题与 楼梯问题 - 递归方法的解释

但是关于基本情况。

问题的一种变体如下:

有n个楼梯,一个人站在最下面想要爬楼梯到达第n个楼梯。该人一次可以爬 1 级楼梯或 2 级楼梯,任务是计算一个人可以到达顶部的方式。

基本条件是这样的:

 if( n <= 1) return n

这是有道理的,因为当有 1 级台阶时,就只有一种方法可以攀登。爬 0 级台阶的情况也是如此。

但是在同一问题的变体中,人们可以采取 1、2 或 3 步,基础变成这样:

if(n<0)
    return 0;

if(n == 0)
    return 1;

因此,如果有 0 级台阶需要攀登,那么这里就有一种方法。为什么?

我注意到的另一件事是,在后一种情况下强调负 n,即在这种情况下它必须返回 0,而在前一种情况下它没有明确处理。前者不会出现吗?

algorithm recursion fibonacci
1个回答
0
投票

就像斐波那契数列。如果 f(n) 是我们一次最多可以爬 k 级台阶的方式数,则 f(n) = f(n-1) + f(n-2) + ....+ f(n-k),其中 f(0) = f(1) = 1,f(任何负数)为 0。

© www.soinside.com 2019 - 2024. All rights reserved.