首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

台阶问题

题目: 给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶; 问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式?...如果只有1个台阶,那么显然只有一种跳法;如果 是2级台阶,那么有2种跳法。...对于一个有n级台阶的楼梯来说,我们设跳法为 f(n) ,假如我们先跳1个台阶,则剩下有 n-1 个台阶,跳法为 f(n-1) 次,假如我们先跳2个台阶,则剩下 n-2 阶,跳法为 f(n-2);由此可以推出...,对于一个n阶的楼梯,有以下这个跳台阶的公式: ?...解题代码如下: [cpp] view plaincopy /** 题目描述: 有N个台阶,一个人从台阶下向上跳台阶,有两种跳的选择 1次跳一个台阶,1次跳两个台阶 这两种选择;

59990
您找到你想要的搜索结果了吗?
是的
没有找到

青蛙跳台阶问题

2.若青蛙先跳两级台阶,接下来只能在再跳一级台阶 所以当有三级台阶时,一共有3种跳法 那么,一共有4级台阶时,一共有多少种跳法呢?...我们不妨列举一下 1.青蛙先跳一级台阶,接下来他就会还有3级台阶要去跳,而这3级台阶不就是上面3级台阶的重复吗!...所以此时一共有3种跳法 2.青蛙先跳2级台阶,接下来他还有2级台阶要跳,此处也可以使用之前得出的2级台阶的结果,所以此时一共有2种跳法 所以当青蛙要跳4级台阶时,其实就是跳3级台阶的跳法加上跳2级台阶的跳法...可能会稍微复杂一点 所以当有3级台阶时,一共有3种方法(其实就是有1级台阶和有两级台阶的跳法之和) 当有4级台阶时,其实也就是3级台阶和2级台阶的跳法之和 所以,要求有n级台阶时的跳法,其实就是n-1...return 2; }else { return jumpFloor(target-1)+jumpFloor(target-2); } } } 青蛙跳台阶是一个十分经典的问题

28430

【C语言】C语言⻘蛙跳台阶问题--递归问题

一、青蛙跳台阶问题 青蛙跳台阶问题是一个经典的递归问题,可以使用递归方法来解决。 问题描述:有n级台阶,青蛙每次可以跳1级台阶或者2级台阶,问青蛙跳上n级台阶有多少种不同的跳法。...当n=2时,有两种跳法:跳一次2级台阶或者跳两次1级台阶。 当n>2时,青蛙的第一次跳有两种选择:跳一级台阶或者跳两级台阶。...如果青蛙第一次跳一级台阶,那么跳上剩下的n-1级台阶的跳法数目为f(n-1)。 如果青蛙第一次跳两级台阶,那么跳上剩下的n-2级台阶的跳法数目为f(n-2)。...所以,跳上n级台阶的总跳法数目为f(n) = f(n-1) + f(n-2)。...:"); scanf("%d", &n); int result = jump(n); printf("跳上%d级台阶的跳法数目为:%d\n", n, result);

10310

经典动态规划问题 -- 青蛙上台阶python 的递归优化

问题 一大早,前同事在微信上给出了个题: 一只青蛙上台阶,一次只能上一个或两个台阶,如果总共有3个台阶,那么有三种上法: 111 — 每次上一个台阶 21 — 先上两个台阶,再上一个台阶 12 — 先上一个台阶...突然想到单源最短路问题,其实这就是经典的动态规划问题 — 单源最短路问题的一个变种,我们如果把每个台阶想象成一张有向加权图的点,每个点都由他前面两个点指向他,权重分别为1和2,这就转化成了一个经典动态规划问题了...手动实现 python 的尾递归优化 上述代码如果将台阶层数增加到几千就会抛出异常: RecursionError: maximum recursion depth exceeded in comparison...我们调试一下: 可以看到,python 解释器并不会像 C 语言编译器一样对尾递归进行优化。...在捕获异常后,作为异常处理的一个环节,python 解释器会自动清理原有的栈,那么通过 python 的异常机制,我们就可以实现上述功能。

62610

青蛙跳台阶问题的三种解法

题目:一只青蛙一次可以跳 1 级台阶,也可以跳 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 这道题还被 ITEye 放在了博文视点杯有奖答题活动里面。 我提供三种解法。...1、递归求解: 青蛙每跳一次前,有这样三种情况: (1)只剩 1 级或 0 级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加 1; (2)可以走 2 级台阶; (3)可以走...1 级台阶。...    total = recursiveCalc(n - 1, total);      return recursiveCalc(n - 2, total);  } 2、概率论思路求解: 首先把问题抽象成简单的数学模型...这时,问题即转化为: z 步骤中,有 x 个两步,y 个一步,相当于 z 个空当,由 x、y 去填充,那么不同填充方法的数目符合概率公式: C(x,z) = z! / ((z-x)!x!)

79110
领券