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

Java解決青蛙跳臺(tái)階問(wèn)題流程

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

1.問(wèn)題描述

一只青蛙一次可以跳上1階臺(tái)階,也可以跳上2階臺(tái)階,求該青蛙跳上一個(gè)n階臺(tái)階總共有多少種跳法?

2.畫(huà)圖分析?

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

3.問(wèn)題講解?

一只青蛙,要么1次跳2個(gè)臺(tái)階,要么1次跳1個(gè)臺(tái)階。

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

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

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

所以說(shuō),你如果想知道n個(gè)臺(tái)階有多少種跳法,其實(shí)就是看n - 1個(gè)臺(tái)階有多少種跳法,加上n - 2個(gè)臺(tái)階有多少種跳法。

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

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

我們?cè)賮?lái)看一下斐波那契數(shù)列的寫(xiě)法:

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

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

而青蛙跳臺(tái)的第一項(xiàng)為1,第二項(xiàng)為2

只要用遞歸的方法稍作改動(dòng)就能求出我們青蛙跳臺(tái)階的問(wèn)題

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

public class TestDemo {
    public static int frogJump(int n){
        if(n == 1 || n == 2){   //當(dāng)n為前2階臺(tái)階的時(shí)候,n是幾就是幾
            return n;
        }else{
            return frogJump(n-2)+frogJump(n-1);//求n階臺(tái)階的幾種跳法
        }
    }
 
 
    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.代碼升級(jí)

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

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

畫(huà)圖分析:

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

給大家解釋一下上圖:?

開(kāi)始f3 = 3,f2 = 2,f1 = 1,

我們先讓f3 = f1 + f2,這么沒(méi)問(wèn)題吧,1+2=3

再來(lái)我們把f2的值賦給f1,此時(shí)f1就等于2,

再把f3的值賦給f2,此時(shí)f2的值就等于3

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

代碼實(shí)現(xiàn):

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

運(yùn)行結(jié)果:

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

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

相關(guān)文章

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

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

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

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

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

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

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

    一文搞懂Java中的日期類(lèi)

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

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

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

    IDEA插件之彩虹括號(hào)Rainbow?Brackets使用介紹

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

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

    下面小編就為大家?guī)?lái)一篇基于字符串常用API(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • JDK17在Windows安裝及環(huán)境變量配置超詳細(xì)的教程

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

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

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

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

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

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

最新評(píng)論

凤山市| 全州县| 阿坝县| 红安县| 右玉县| 渑池县| 邵东县| 靖边县| 凌海市| 久治县| 安西县| 宁强县| 天峻县| 宜宾县| 广宁县| 平江县| 襄樊市| 泰州市| 上饶市| 河东区| 连州市| 宕昌县| 青阳县| 花莲市| 板桥市| 茂名市| 天水市| 新乡市| 九龙县| 叙永县| 浠水县| 宜春市| 太湖县| 上杭县| 乌审旗| 滨海县| 渝中区| 古丈县| 永丰县| 郓城县| 南雄市|