【你问我答】青蛙跳台阶问题

问题描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#悬赏##Java工程师##面试题目#
全部评论
Are you serious? 你是希尔瑞斯吗?就这?
1 回复
分享
发布于 2020-10-20 17:05
青蛙从n=1开始跳和从n=n开始跳是一样的。 当青蛙第一步跳了1级台阶之后,它还有(n-1)个台阶要跳,因此,青蛙选择第一步跳1级台阶的跳法取决于后面(n-1)级台阶的跳法,记为f(n-1);然后青蛙第一步还可以选择一次跳两级台阶,此时,青蛙还有(n-2)级台阶要跳,因此,青蛙选择第一步跳1级台阶的跳法取决于后面(n-2)级台阶的跳法,记为f(n-2);…。所以,青蛙跳到n级台阶的总跳法记为:f(n) = f(n-1) + f(n-2) + f(n-2) + … + f(1) 而f(n-1) = f(n-2) + f(n-3) + … + f(n) 因此,f(n) = 2f(n-1) n=1时,f(n)=1 n=2时,f(n)=2 … f(n)是等比数列,其通项为f(n)=2^(n-1)
2 回复
分享
发布于 2020-10-20 18:21
博乐游戏
校招火热招聘中
官网直投
首先分析一波: f(1) = 1                     //这个就不用解释了 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。 f(3) = f(3-1) + f(3-2) + f(3-3) … f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(n-(n-1)) + f(n-n) 在这里简单说明一下: 1)这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。 2)n = 1时,只有1种跳法,f(1) = 1 3) n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2) 4) n = 3时,会有三种跳得方式,1阶、2阶、3阶, 那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2);第一次3阶,那么剩下f(3-3) 因此结论是f(3) = f(3-1)+f(3-2)+f(3-3) 5) n = n时,会有n中跳的方式,1阶、2阶…n阶,得出结论: f(n) = f(n-1)+f(n-2)+…+f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + … + f(n-1) 6) 为了简单,我们可以继续简化它: f(n-1) = f(0) + f(1)+f(2)+f(3) + … + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + … + f(n-2) f(n) = f(0) + f(1) + f(2) + f(3) + … + f(n-2) + f(n-1) = f(n-1) + f(n-1) 可以得出: f(n) = 2*f(n-1) 所以最后我们可以得出一个结论
点赞 回复
分享
发布于 2020-10-20 18:53
n个台阶,n-1个空格,每个空格可选加档板或不加,总共2**(n-1)种情况
点赞 回复
分享
发布于 2020-10-20 19:59
我记得9月份的奇安信也出过这题。(⊙﹏⊙), 2^(n-1)次,打表看出来的。😂
点赞 回复
分享
发布于 2020-10-20 20:48
不刷LeetCode至少做一下剑指offer楼主
点赞 回复
分享
发布于 2020-10-20 21:26
找只青蛙试试?
点赞 回复
分享
发布于 2020-10-21 09:32

相关推荐

头像
点赞 评论 收藏
转发
3 1 评论
分享
牛客网
牛客企业服务