最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java解決青蛙跳臺階問題流程

 更新時間:2022年03月15日 14:36:28   作者:K穩(wěn)重  
所謂的青蛙跳臺階問題,就是指一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。本文將用Java解決這一問題,需要的可以參考一下

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個臺階。

假設(shè)3個臺階為例:如果1次跳1個臺階,那剩下幾種跳法?我們來仔細地想一下:

跳了一個臺階之后,剩下的臺階就相當(dāng)于3 -1個臺階剩下2個臺階,2個臺階的跳法如上圖就是2種跳法。

如果一次跳2個臺階,剩下的臺階就相當(dāng)于3 - 2個臺階剩下1個臺階,1個臺階的跳法如上圖是1種跳法。那么加起來就是3種跳法。

所以說,你如果想知道n個臺階有多少種跳法,其實就是看n - 1個臺階有多少種跳法,加上n - 2個臺階有多少種跳法。

規(guī)律看懂后你就發(fā)現(xiàn)這其實就是一個變相的斐波那契數(shù)列,只不過這個數(shù)列的第一項是1,第二項是2.

4.代碼設(shè)計思路

我們再來看一下斐波那契數(shù)列的寫法:

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

唯一的不同就是斐波那契數(shù)列的前兩個項都是1

而青蛙跳臺的第一項為1,第二項為2

只要用遞歸的方法稍作改動就能求出我們青蛙跳臺階的問題

5.實現(xiàn)代碼?

public class TestDemo {
    public static int frogJump(int n){
        if(n == 1 || n == 2){   //當(dāng)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));
 
    }
}

打印結(jié)果:

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

6.代碼升級

用遞歸的方式雖然可以求解青蛙跳臺階問題,但是這其中會進行大量重復(fù)的計算。如果求的數(shù)字過大,程序運算出結(jié)果花費的時間會非常的長,所以我們并不建議在面試出現(xiàn)這樣的問題的時候用遞歸的方法求解。

這里給大家介紹一種更好的求解方式:循環(huán)(迭代)實現(xiàn)?

畫圖分析:

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

循環(huán)起來,那此時再求f3的值就是2+3=5,恰好就是我們4階臺階的5種跳法。

代碼實現(xiàn):

第二種寫法:循環(huán)(迭代)實現(xiàn) 
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));
 
    }
}

運行結(jié)果:

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

到此這篇關(guān)于Java解決青蛙跳臺階問題流程的文章就介紹到這了,更多相關(guān)Java 青蛙跳臺階內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析

    基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析

    這篇文章主要介紹了基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • windows下java環(huán)境變量的設(shè)置方法

    windows下java環(huán)境變量的設(shè)置方法

    在“系統(tǒng)變量”中,設(shè)置3項屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點擊“編輯”,不存在則點擊“新建”
    2013-09-09
  • java實現(xiàn)文件切片上傳百度云+斷點續(xù)傳的方法

    java實現(xiàn)文件切片上傳百度云+斷點續(xù)傳的方法

    文件續(xù)傳在很多地方都可以用的到,本文主要介紹了java實現(xiàn)文件切片上傳百度云+斷點續(xù)傳的方法,?文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文搞懂Java中的日期類

    一文搞懂Java中的日期類

    在程序的開發(fā)中我們經(jīng)常會遇到日期類型的操作,Java對日期類型的操作提供了很好的支持。本文將通過示例來聊聊Java中日期類的使用,需要的可以參考一下
    2022-09-09
  • SpringBoot中定義Bean的方法總結(jié)

    SpringBoot中定義Bean的方法總結(jié)

    在Spring Boot應(yīng)用程序中,定義Bean是非常常見的操作,它是構(gòu)建應(yīng)用程序的基礎(chǔ),pring Boot提供了多種方式來定義Bean,每種方式都有其適用的場景和優(yōu)勢,本文將介紹Spring Boot中定義Bean的幾種常見方式,需要的朋友可以參考下
    2023-12-12
  • IDEA插件之彩虹括號Rainbow?Brackets使用介紹

    IDEA插件之彩虹括號Rainbow?Brackets使用介紹

    這篇文章主要為大家介紹了IDEA插件之彩虹括號Rainbow?Brackets使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 基于字符串常用API(詳解)

    基于字符串常用API(詳解)

    下面小編就為大家?guī)硪黄谧址S肁PI(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • JDK17在Windows安裝及環(huán)境變量配置超詳細的教程

    JDK17在Windows安裝及環(huán)境變量配置超詳細的教程

    這篇文章主要介紹了JDK17在Windows安裝及環(huán)境變量配置超詳細的教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Mybatis中使用in()查詢的方式詳解

    Mybatis中使用in()查詢的方式詳解

    當(dāng)參數(shù)有值,添加條件查詢,附帶一個字符串的in查詢,下面這篇文章主要給大家介紹了關(guān)于Mybatis中使用in()查詢的方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • mybatis-4 mybatis與spring結(jié)合使用及原理解析

    mybatis-4 mybatis與spring結(jié)合使用及原理解析

    本文通過圖文并茂的形式給大家介紹了mybatis-4 mybatis與spring結(jié)合使用及原理解析,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04

最新評論

明溪县| 林西县| 涞水县| 寿光市| 兴城市| 洪雅县| 普安县| 湾仔区| 大名县| 获嘉县| 花垣县| 东台市| 库尔勒市| 余江县| 麻城市| 齐齐哈尔市| 全州县| 南丰县| 绥德县| 武宣县| 巧家县| 内乡县| 秀山| 临湘市| 阿城市| 淳化县| 青州市| 虞城县| 惠安县| 明溪县| 老河口市| 清河县| 安塞县| 贡觉县| 扶风县| 射阳县| 达日县| 达尔| 边坝县| 彭山县| 金湖县|