iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java解决青蛙跳台阶问题流程
  • 208
分享到

Java解决青蛙跳台阶问题流程

2024-04-02 19:04:59 208人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

1.问题描述 一只青蛙一次可以跳上1阶台阶,也可以跳上2阶台阶,求该青蛙跳上一个n阶台阶总共有多少种跳法? 2.画图分析  3.问题讲解  一只青蛙,要么1次跳2个台阶,要么1次跳

1.问题描述

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

2.画图分析 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

3.问题讲解 

一只青蛙,要么1次跳2个台阶,要么1次跳1个台阶。

假设3个台阶为例:如果1次跳1个台阶,那剩下几种跳法?我们来仔细地想一下:

跳了一个台阶之后,剩下的台阶就相当于3 -1个台阶剩下2个台阶,2个台阶的跳法如上图就是2种跳法。

如果一次跳2个台阶,剩下的台阶就相当于3 - 2个台阶剩下1个台阶,1个台阶的跳法如上图是1种跳法。那么加起来就是3种跳法。

所以说,你如果想知道n个台阶有多少种跳法,其实就是看n - 1个台阶有多少种跳法,加上n - 2个台阶有多少种跳法。

规律看懂后你就发现这其实就是一个变相的斐波那契数列,只不过这个数列的第一项是1,第二项是2.

4.代码设计思路

我们再来看一下斐波那契数列的写法:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

唯一的不同就是斐波那契数列的前两个项都是1

而青蛙跳台的第一项为1,第二项为2

只要用递归的方法稍作改动就能求出我们青蛙跳台阶的问题

5.实现代码 


public class TestDemo {
    public static int frogJump(int n){
        if(n == 1 || n == 2){   //当n为前2阶台阶的时候,n是几就是几
            return n;
        }else{
            return frogJump(n-2)+frogJump(n-1);//求n阶台阶的几种跳法
        }
    }
 
 
    public static void main(String[] args) {
        System.out.println(frogJump(1));
        System.out.println(frogJump(2));
        System.out.println(frogJump(3));
        System.out.println(frogJump(4));
 
    }
}

打印结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

6.代码升级

用递归的方式虽然可以求解青蛙跳台阶问题,但是这其中会进行大量重复的计算。如果求的数字过大,程序运算出结果花费的时间会非常的长,所以我们并不建议在面试出现这样的问题的时候用递归的方法求解。

这里给大家介绍一种更好的求解方式:循环(迭代)实现 

画图分析:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

给大家解释一下上图: 

开始f3 = 3,f2 = 2,f1 = 1,

我们先让f3 = f1 + f2,这么没问题吧,1+2=3

再来我们把f2的值赋给f1,此时f1就等于2,

再把f3的值赋给f2,此时f2的值就等于3

循环起来,那此时再求f3的值就是2+3=5,恰好就是我们4阶台阶的5种跳法。

代码实现:


第二种写法:循环(迭代)实现 
public class TestDemo {
    public static int frogJump2(int n){
        if(n == 1 || n==2){
            return n;
        }
        int f1 = 1;
        int f2 = 2;
        int f3 = 0;
        for (int i = 3; i <= n; i++) {
            f3 = f1+f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
 
    }
    public static void main(String[] args) {
        System.out.println(frogJump2(1));
        System.out.println(frogJump2(2));
        System.out.println(frogJump2(3));
        System.out.println(frogJump2(4));
        System.out.println(frogJump2(5));
        System.out.println(frogJump2(45));
 
    }
}

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_20,color_FFFFFF,t_70,g_se,x_16

到此这篇关于Java解决青蛙跳台阶问题流程的文章就介绍到这了,更多相关Java 青蛙跳台阶内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java解决青蛙跳台阶问题流程

本文链接: https://www.lsjlt.com/news/142569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java解决青蛙跳台阶问题流程
    1.问题描述 一只青蛙一次可以跳上1阶台阶,也可以跳上2阶台阶,求该青蛙跳上一个n阶台阶总共有多少种跳法? 2.画图分析  3.问题讲解  一只青蛙,要么1次跳2个台阶,要么1次跳...
    99+
    2024-04-02
  • C语言如何解决青蛙跳台阶问题
    小编给大家分享一下C语言如何解决青蛙跳台阶问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 基础问题题目描述一只青蛙一次可以跳上 1 级台阶,也可以跳上 2...
    99+
    2023-06-29
  • C语言 递归解决青蛙跳台阶问题
    目录前言一、求解思路二、代码实现1.参考代码2.运行结果总结 前言 一只青蛙一次可以跳1级或2级台阶,求当台阶数为n时青蛙有多少种跳法。 一、求解思路 台阶的数量为n。 当 n = ...
    99+
    2024-04-02
  • C语言解决青蛙跳台阶问题(升级版)
    目录1. 基础问题题目描述解题思路代码实现2. 问题升级题目描述解题思路代码实现3. 特性总结1. 基础问题 题目描述 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙...
    99+
    2024-04-02
  • C语言中如何使用递归解决青蛙跳台阶问题
    这篇文章主要介绍C语言中如何使用递归解决青蛙跳台阶问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、求解思路台阶的数量为n。当 n = 1 时,青蛙有一种跳法,即跳1级台阶。当 n = 2 时,青蛙有两种跳法,即...
    99+
    2023-06-25
  • C语言递归之汉诺塔和青蛙跳台阶问题
    递归就是一个函数执行过程中调用自己,在c语言中有很多关于递归的经典问题,例如:斐波那契数列问题、汉诺塔问题等,在研究递归问题时我们要注意三点: 1.递归的结束条件 2.递归在每次进行...
    99+
    2024-04-02
  • 手把手带你用java搞定青蛙跳台阶
    目录问题描述问题剖析n=1n=2n=3n=4小结Java代码示例附:C语言实现青蛙跳台阶总结问题描述 一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶...
    99+
    2024-04-02
  • C 语言基础实现青蛙跳台阶和汉诺塔问题
    目录一、青蛙跳台阶题目思路分析1. 从跳法次数分析2. 从过程分析二、青蛙跳台阶变式1题目分析三、青蛙跳台阶变式2题目分析四、汉诺塔问题(求步数)题目思路分析五、汉诺塔问题(求移动过...
    99+
    2024-04-02
  • 如何从青蛙跳台阶开始来了解Dynamic Programming
    这篇文章给大家介绍如何从青蛙跳台阶开始来了解Dynamic Programming,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。动态规划(Dynamic Programming),简称...
    99+
    2024-04-02
  • Python算法如何解决楼梯台阶问题
    这篇文章主要讲解了“Python算法如何解决楼梯台阶问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python算法如何解决楼梯台阶问题”吧!有一个有N个台阶的楼梯,你一次可以爬1或2个台...
    99+
    2023-06-02
  • Java回溯法解决全排列问题流程详解
    题目描述: 给定一不重复的数组,返回其具有的所有全排列(使用 List<List > 返回) 思路: 以数组 nums = [1, 2, 3] 为例,其具有的解空间可以用...
    99+
    2024-04-02
  • 怎么解决Java while(scanner.hasNext())无法跳出问题
    本篇内容主要讲解“怎么解决Java while(scanner.hasNext())无法跳出问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Java while(scanner.has...
    99+
    2023-06-25
  • Java利用跳跃表解决双重队列问题详解
    目录一 问题描述二 输入三 输出四 输入和输出样例五 分析和设计六 代码七 测试一 问题描述 银行的每个客户都有一个正整数标识 K,到银行请求服务时将收到一个正整数的优先级...
    99+
    2022-12-28
    Java跳跃表解决双重队列 Java跳跃表 Java 双重队列
  • 小程序嵌套H5跳转(web-view)问题解决
    项目场景: 项目场景:小程序内嵌h5页面时,点击某处需要跳转进去对应的页面,进行之后的业务逻辑。贴图两张:第一张为pc端小程序模拟器点击跳转时的截图,第二张为手机端测试接收的入参截图(第二张我是拿alert断点去查入参的) 解决方法 ...
    99+
    2023-08-17
    前端 小程序 javascript
  • PHP编程技巧:解决迅雷无法跳转问题
    PHP编程技巧:解决迅雷无法跳转问题 迅雷是一款常用的下载工具,但有时候在使用迅雷下载文件时会遇到无法跳转的问题,这会对下载速度和稳定性造成影响。在PHP编程中,我们可以通过一些技巧来...
    99+
    2024-04-02
  • Python安装.whl文件流程及问题解决
    安装.whl文件流程及问题解决 文章目录 安装.whl文件流程及问题解决1.提前安装Python及pip工具2.下载合适的whl安装包3.安装.whl文件 Python中,.whl文件...
    99+
    2023-08-31
    python 开发语言 爬虫 pip
  • 跳开 DDD 和中台概念看阿里巴巴交易平台的问题及解决思路
    | 本文出处:https://yq.aliyun.com/articles/511876作者Ryu Xin,原文标题《如何实现32.5万笔/秒的交易峰值?阿里交易系统TMF2.0技术揭秘》,技术琐话受权转载。总体介绍2017年双11,交易峰...
    99+
    2023-06-05
  • 解决Java API不能远程访问HBase的问题
    目录Java API不能远程访问HBase配置Linux的hostname配置Linux的hosts配置访问windows的hosts最后附上Java代码示例Java AP...
    99+
    2024-04-02
  • Java 线程死锁的问题解决办法
     Java 线程死锁的问题解决办法【线程死锁】 原因:两个线程相互等待被对方锁定的资源 代码模拟:public class DeadLock { public static void main(String[] arg...
    99+
    2023-05-31
    java 线程死锁 ava
  • 如何解决Java多线程死锁问题
    死锁问题 死锁定义 多线程编程中,因为抢占资源造成了线程无限等待的情况,此情况称为死锁。 死锁举例 注意:线程和锁的关系是:一个线程可以拥有多把锁,一个锁只能被一个线程拥有。 当两个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作