剑指offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

编程入门 行业动态 更新时间:2024-10-22 08:30:42

剑指offer:一只青蛙一次可以<a href=https://www.elefans.com/category/jswz/34/1699402.html style=跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。"/>

剑指offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

剑指offer


递归 跳台阶

题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

题目分析
因为这只青蛙只能一次跳1级台阶或者2级台阶。假设现在在第n级台阶上,他只有可能从第n-1级台阶,也就是一次跳1级台阶上来,F(n-1);也有可能从第n-2级台阶,也就是一次跳2级台阶上来,F(n-2)。除此之外没有其他可能,所以可以得出:

f(n) = f(n-1)+f(n-2)

最终得出这是一个是一个斐波那契数列:
f ( n ) = { 1 , (n=1) 2 , (n=2) f ( n − 1 ) + f ( n − 2 ) , (n>2,n为整数) f(n)= \begin{cases} 1, & \text {(n=1)} \\ 2, & \text{(n=2)}\\ f(n-1)+f(n-2),&\text{(n>2,n为整数)}\end{cases} f(n)=⎩⎪⎨⎪⎧​1,2,f(n−1)+f(n−2),​(n=1)(n=2)(n>2,n为整数)​

下面是JAVA算法实现:

public int JumpFloor(int target) {int temp = 0 ;if(target <= 0){return 0;}else if(target == 1){return 1;}else if (target == 2){return 2;}else{temp = JumpFloor(target-2)+JumpFloor(target-1);return temp;}}

更多推荐

剑指offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

本文发布于:2024-02-25 15:17:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1699398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:跳上   台阶   青蛙   一只   有多少

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!