上楼一次走一节还是两节楼梯,走法计算思路

作者在面试中遇到了一道经典题目:有N级楼梯,每次可以走1级或2级,问有多少种走法。起初尝试使用错误的归纳法解答,后来意识到问题本质为二叉树遍历,适合用递归解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试又露怯一回,别的就不说了,每次走一或两节楼梯的问题,可以漏了大怯了:有N节楼梯,每次可以走1节或者2节,总共有几种走法,写出计算程序。

本能的来说我想到了这题肯定要递归的,可是想了想不知道怎么递归比较好,所以放弃了该用归纳数据的方法。别的啥也不说了先说说我的错误答案,将楼梯的最下层拿掉两层,也就是后面所有的方法减掉了11 20 两种选择,所以就按照这个思路进行计算,最后判断取模余0还是1。首先这方法不是正经算法我也知道,不过当时感觉良好久这么写了,刚出大楼没多久就发现根本不对啊,就算用这种方式递归,选取3层作为样本不是更好,至少比两层的时候有说服力啊,唉。

晚上又想了一下,恍然大悟,这就是个二叉树嘛,1和2就是俩字节点,其实就是算出路径条数就行了,思路就像是深度搜索差不多,只不过递归的最终条件是总和等于N,然后记录最后的总条数为止。

唉,每次面试总是这样,遇到问题乱答一气,当时感觉挺好不过只要转念一想马上就漏出差错,难道真的是心理素质太差了吗,考试时候是这样,竞技时候是这样,从来没发挥出过正常水平,人生路上还是这样,怎么办

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值