先来了解一下什么是斐波那契数列?

1 1 2 3 5 8 13 21 34 …
通过观察可以发现:每一项的值都是前两项之和。
1+1=2 2+3=5 3+5=8 …
这将得出一个递推公式:F(n)=F(n-1)+F(n-2)
你以为这就是它全部的规律了吗?
现在将数列的每一项进行平方,将得到以下数列:
1 1 4 9 25 64 …
现在你会发现
1+1+4=6=2×3
1+1+4+9=15=3×5
1+1+4+9+25=40=5×8
1+1+4+9+25+64=104=8×13

接下来我们进入正题青蛙跳格问题

分析: 对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以F(n) = F(n-1) + F(n-2),看到这儿就熟悉了吧,这不就是斐波拉契数列嘛,对的,就是。只是换了说法而已。话不多说直接上代码。

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

public class Main {public static void main(String[] args) {System.out.print("输入台阶数:");int i = new Scanner(System.in).nextInt();System.out.println("总共的跳法有:" + jumpFloor(i) + "种");}/*** 计算跳台阶的种数** @param target 台阶的数量* @return 返回一共多少种*/private static int jumpFloor(int target) {if(target==1){return 1;}else if(target==2){return 2;}else {return jumpFloor(target-1)+jumpFloor(target-2);}}
}

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

分析:
方法(1):找规律发现f(n)=2^(n-1)
方法(2):可以分析,跳到当前台阶总可能数=前面所有台阶可能性+1.即f(n)=f(1)+f(2)+…f(n-1)+1,这个1代表直接跳到当前台阶

    private static int jumpFloor(int target) {int first = 1;int sum = 1;while (target >1){sum += first;first = sum;target--;}return sum;}//第二种public static int JumpFloorII(int target) {if(target <= 2){return target;}else{return JumpFloorII(target - 1) * 2;}//f(n)=f(n-1)+f(n-2)+...f(1)//f(n-1)=f(n-2)+f(n-3)+...f(1)//两式相减得f(n)=2*f(n-1)}

青蛙跳格子(斐波那契数列)相关推荐

  1. 斐波那契数列及青蛙跳台阶问题

    题目1: 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 斐波那契(Fibonacci)数列定义例如以下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n& ...

  2. 斐波那契数列 青蛙跳台阶 变态跳台阶

    目录 一.斐波那契数列 二.青蛙跳台阶问题 三.变态跳台阶 一.斐波那契数列 题目:写一个函数,输入n,求斐波那契数列的第n项. 思路:用递归的方法,f(n) =f(n-1) + f(n-2).代码比 ...

  3. 青蛙跳台阶问题暨斐波那契数列

    1.问题描述 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 2.问题分析 设 f(n) 表示青蛙跳上 n 级台阶的跳法数.当只有一个台阶时, ...

  4. python一只青蛙一次可以_40.细说递归之二:Python求解斐波那契数列

    本篇通过青蛙跳台阶.兔子数列(斐波那契数列)问题进一步理解递归思想的魅力. 上一篇最后的题目如下: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级的台阶总共有多少种跳法? 归纳 ...

  5. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  6. 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。

    最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...

  7. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  8. 一只青蛙一次可以跳一级或二级台阶,请问跳n级台阶有多少次跳法之斐波那契数列的非递归写法

    对于这个问题 前三次都好算分别为1,2,3次,后面多的话不好简单计算 当第n级台阶时,因为青蛙只能跳一级或二级台阶,所以第n级只有两种方法跳过来, 即,从前一级(n-1)或前两级(n-2),所以调到这 ...

  9. 青蛙跳台阶问题(斐波拉契数列、动态规划)

    青蛙跳台阶问题 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10 ...

最新文章

  1. 清华成果发布 | 广度学习基础计算系统集成平台
  2. 坑 之 tensorflow使用sess.run处理图片时越来越慢,占用内存越来越大的问题
  3. 机器学习结构化学习模型_生产化机器学习模型
  4. 安装linux无驱动黑屏,ubuntu16.04安装黑屏与显卡安装笔记
  5. gulp教程之gulp-autoprefixer
  6. python 字符串前面的“r“是个啥?
  7. 通达信资金净流入公式_净流入副图源码指标 通达信 贴图
  8. android模拟器加速,给android模拟器加速
  9. HC-05与JDY-09蓝牙模块对比与使用
  10. 简述计算机硬盘常见故障及处理方法,常见计算机硬盘故障的解决方法
  11. js设计模式之策略模式
  12. iphone捷径大全_iPhone捷径,助您一臂之力
  13. 华为热设计工程师待遇_【华为热设计工程师面试】华为热设计工程师大家要慎重考虑。-看准网...
  14. 记录一下Unity学习中的一些奇异事件
  15. w ndows7怎样连接无线网,windows7电脑如何连接wifi
  16. Excel表格按行数拆分为多个文件
  17. windows系统重装
  18. 回收站清空的文件怎么恢复?失易得这样恢复
  19. 20190313(已解决)对于jsp界面与action界面关系的说明_yingruiyuelin_新浪博客
  20. 【mathematica画三维空间坐标系箭头】

热门文章

  1. 【Linux】冯诺依曼体系结构、操作系统及进程概念
  2. 分布式数据库CAP理论
  3. 关于BERT预训练模型,你想知道的都在这~
  4. MTU TTL RTT
  5. @Alias使用技巧
  6. 春节假期我读过的那些书
  7. 【前端】vue-slider实现可设置选择范围的时间轴
  8. 并发中的同步锁(synchronized)
  9. Linux常用基本命令大全
  10. FINDSTR 命令使用详解