关于爬楼梯问题的详细思路(斐波那契系数)

本文详细解释了爬楼梯问题(斐波那契算法)的动态规划解题思路,通过逐步拆解和递归计算,展示了如何得出上第n阶楼梯的方法数等于上第n-2阶和第n-1阶之和的结论。
摘要由CSDN通过智能技术生成

为了给孩子们讲明白,网上看了很多,但是都是以大家有一定的编程基础来编写的答案,对于基础差或者没基础的朋友来说还是太抽象了,在这里我详细地带朋友们分析一下:

爬楼梯问题(斐波那契算法)思路分析

题目:你正在爬楼梯,楼梯共有x阶。到达顶峰需要y步。每次您都可以爬 1 或 2 级台阶。你能用多少种不同的方式爬到x阶?

思路详解:

  1. 首先我们从第一阶开始,上第一阶只需要 1 步,也就是一种方法
  2. 第二阶,可以1+1,也可以2,共两种方法。
  3. 第三阶,可以1+1+1,1+2,2+1, 共三种方法。那么我们可以拆解为我们是从第一阶或第二阶上去的:
    1. 如果从第一阶上去的, 就有1+1 和 2 两种办法,而上第一阶只有一种方法,所以是1(上第一阶的办法数)* 2 等于两种方法。(1+1+1,1+2)
    2. 如果是从第二阶上去的,只有1 的一种方法,而上第二阶有两种方法,所以就是2(上第二阶的方法数) * 1 等于两种方法。(1+1+1,2+1)
    3. 但是,从第一阶上去的方法里面和从第二阶上去的方法里面都有 1+1+1 的方法,所以我们要将从第一阶上去的方法里面减去这一种方法,因此从第一阶上去的方法里减去重复的1+1+1的方法,那么剩下的总数就是三种方法。
    4. 那么,从第一阶到第三阶的方法为1种,正好等于上第一阶的方法数
    5. 而从第二阶到第三阶的方法有2种,正好等于上第二阶的方法数。

结论就是上第三阶的方法正好等于上第一阶和上第二阶的方法之和。

  1. 同理,我们来看第四阶,每次只能走一阶或两阶,所以只能从第三阶或第二阶上去:
    1. 如果从第二阶上去的,就有就有1+1 和 2 两种办法,而上第二阶有两种方法,所以是2(上第二阶的办法数)* 2 等于四种方法。(1+1+1+1,1+1+2,2+1+1,2+2)
    2. 如果从第三阶上去的,只有1 的一种方法,而上第三阶有三种方法,所以结果就是3(上第三阶的方法数) * 1 等于三种方法。(1+1+1+1, 1+2+1, 2+1+1)
    3. 但是从第二阶上去的和第三阶上去的方法里面都有1+1+1+1和 2+1+1的方法,所以我们要将从第二阶上去的方法里面减去这两种重复的方法,剩下两种方法。剩下总方法数就是五种
    4. 那么,从第二阶到第四阶的方法为两种,正好等于上第二阶的方法数
    5. 而从第三阶到第四阶的方法有三种,正好等于上第三阶的方法数

结论就是,上第四阶的方法正好等于上第二阶的方法和上第三阶方法之和

  1. 通过以上的演算,可以得出结论,上第n阶的爬法正好等于上第(n-2)阶与第(n-1)阶的方法之和,Fn(n) = Fn(n-2) + Fn(n-1)。
  2. 接下来我们只需要一直重复由高到低的拆解运算直到最下面的第一阶和第二阶即可,因为方法数就是不断地反复计算每一步的方法数累计而成的。

代码:

public static int dpFibonacci(int topStep) {
    if (topStep == 1) return 1;
    else if (topStep == 2) return 2;
    else {
        return dpFibonacci(topStep - 2) + dpFibonacci(topStep - 1);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值