1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java-青蛙跳台阶问题(递归 迭代)

java-青蛙跳台阶问题(递归 迭代)

时间:2021-06-02 20:20:57

相关推荐

java-青蛙跳台阶问题(递归 迭代)

题目一

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

方法一,用递归思路如果只有一级台阶, 一种跳法如果两级台阶,两种跳法,① 每次跳一级 ② 一次跳两级如果三级台阶,三种跳法 ① 每次跳一级,跳三次 ② 一次跳两级,一次跳一级 ③ 一次跳一级,一次跳两级如果是四级台阶, 5种跳法 ① 每次跳一级,跳4次 ,② 两次跳两级 ③每次跳一级,跳两次,一次跳两级,跳一次④ 一次跳一级,一次跳两级,一次跳一级.....

根据上面的表格可以看出前两项的和加起来等于后一项,类似于斐波那契数列,n阶台阶时的跳法看成n的函数f(n),f(n)=f(n-1)+f(n-2)

public class Test {static int f(int n) {if(n < 2) {return 1;}return f(n-1)+f(n-2);}public static void main(String[] args) {int n=4;int result =f(n);System.out.println(result);}}

递归的方法在输入较大的数如 100 ,程序会非常的慢,时间效率低

方法二 迭代f[3] = f[2] + f[1]f[4] = f[3] + f[2]....每次只需要知道他的 n-1项 和 n - 2 项

public int JumpFloor(int target) {if(target <= 0){return 1;}if(target == 1 || target ==2){return target;}int a1 = 1;int a2 = 2;int temp =0;//定义中间变量for(int i =3; i<= target;i++){temp = a1+a2;a1 = a2;a2 = temp;}return temp;}

题目二

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

示例1

输入

3

返回值

4

思路:

f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(1)f(n-1)=f(n-2)++f(n-3)+...+f(1)两个表达式相减f(n)=2 * f(n-1)且 f(1) = 1f(n) = pow(2, n - 1)

public class Solution {public int JumpFloorII(int target) {return (int)Math.pow(2,target -1); }}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。