跳台階問題-java,跳台階-java

來源:互聯網
上載者:User

跳台階問題-java,跳台階-java
跳台階問題

題目描述:

一隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法。

解析

這個問題歸根結底還是一個費布拉奇數列,仔細找一下規律即可,剛開始做的時候我是直接寫出前六個數的結果來找規律的。

一級台階:1種 fib(1)=1
二級台階:2種 fib(2)=2
三級台階:3種 fib(3)=fib(1)+fib(2)=3
四級台階:5種 fib(4)=fib(2)+fib(3)=5
五級台階:8種 fib(5)=fib(3)+fib(4)=8
六級台階:13種 fib(6)=fib(4)+fib(5)=13

現在看出規律了吧,fib(n)=fib(n-1)+fib(n-2),fib(1)=1,fib(2)=2。
java代碼如下所示(直接在main函數中調用即可):

public int jumpFloor(int number) {        if (number == 1)            return 1;        else if (number == 2)            return 2;        else             return jumpFloor(number-1)+jumpFloor(number-2);     } 
變態跳台階問題

題目描述

一隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。

解析

這個也是如上所示的推理方法,沒什麼技術含量。寫出前六個的跳台階的結果,這個有一部分在上面的已經數出來了,所以我們就只要算上可以跳2階台階以上的結果就行了。然後算出

一級台階:1種 f=fib(1)=1=2^1
二級台階:2種 f=fib(2)=2=2^2
三級台階:3種 f=fib(3)+1=4=2^3
四級台階:5種 f=fib(4)+3=8=2^4
五級台階:8種 f=fib(5)+8=16=2^5
六級台階:13種 f=fib(6)+19=32=2^6

然後這個思路清晰了,代碼就好寫了,和上面類似,都是考察遞迴和迴圈的知識點。

public int jumpFloor2(int number) {        if (number ==1)            return 1;        else if(number==2)            return 2;        else            return jumpFloor2(number-1)*2;    }
總結:

在做題的時候,剛開始總要學會動筆找一些規律,先想好思路,找出規律,把問題用數學方法找出解決規律辦法,然後再用編程來實現。當然方法有很多種,實現的編程方法也可以是for迴圈,這個應該算是最簡潔的代碼實現方法吧。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.