欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • Spring boot 數(shù)據(jù)庫(kù)連接斷線重連問(wèn)題

    Spring boot 數(shù)據(jù)庫(kù)連接斷線重連問(wèn)題

    這篇文章主要介紹了Spring boot 數(shù)據(jù)庫(kù)連接斷線重連問(wèn)題,需要的朋友可以參考下
    2017-06-06
  • 基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境

    基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境

    這篇文章主要介紹了基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • mybatis 逆向生成后遵循java駝峰法則的解決

    mybatis 逆向生成后遵循java駝峰法則的解決

    這篇文章主要介紹了mybatis 逆向生成后遵循java駝峰法則的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • SpringBoot自動(dòng)初始化數(shù)據(jù)庫(kù)的方法分享

    SpringBoot自動(dòng)初始化數(shù)據(jù)庫(kù)的方法分享

    我們?cè)陧?xiàng)目中應(yīng)該經(jīng)常遇到過(guò)初始化數(shù)據(jù)的場(chǎng)景,特別是項(xiàng)目部署或者交付的時(shí)候,那么有什么方式可以在項(xiàng)目啟動(dòng)的時(shí)候自動(dòng)初始化數(shù)據(jù)庫(kù)呢,下面小編就來(lái)和大家分享幾個(gè)方法吧
    2023-08-08
  • java 獲取HttpRequest Header的幾種方法(必看篇)

    java 獲取HttpRequest Header的幾種方法(必看篇)

    下面小編就為大家?guī)?lái)一篇java 獲取HttpRequest Header的幾種方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Mybatis-plus批量插入的2種方式總結(jié)

    Mybatis-plus批量插入的2種方式總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Mybatis-plus批量插入的2種方式,Mybatis-Plus提供了多種方式進(jìn)行批量插入優(yōu)化,文中通過(guò)代碼示例將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Springmvc如何返回xml及json格式數(shù)據(jù)

    Springmvc如何返回xml及json格式數(shù)據(jù)

    這篇文章主要介紹了Springmvc如何返回xml及json格式數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • JavaEE多線程中阻塞隊(duì)列的項(xiàng)目實(shí)踐

    JavaEE多線程中阻塞隊(duì)列的項(xiàng)目實(shí)踐

    本文主要介紹了JavaEE多線程中阻塞隊(duì)列的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Java集合系列之ArrayList源碼分析

    Java集合系列之ArrayList源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java集合系列之ArrayList源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • java-list創(chuàng)建的兩種常見(jiàn)方式

    java-list創(chuàng)建的兩種常見(jiàn)方式

    本文給大家分享Java-list創(chuàng)建的兩種常見(jiàn)方式,每種方式結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2022-11-11

最新評(píng)論