牛客網算法(九):變態跳臺階

題目描述

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

題目描述

        看題目標題爲變態跳青蛙,其實認真分析一下就很簡單了。

  • 一級臺階時,只有一種跳法。
  • 二級臺階時,當第一次跳一級時,還剩一級臺階,此時只有一種跳法;第一次跳二級時,此時只有一種跳法。所以二級臺階共有兩種(1+1)跳法。
  • 三級臺階時,當第一次跳一級時,還剩二級臺階,利用二級臺階時的跳法,此時有兩種跳法;當第一次跳二級時,還剩一級臺階,利用一級臺階時的跳法,此時有一種;當第一次直接跳三級時,此時只有一種跳法。所以三級臺階共有四種(1+2+1)跳法。
  • 四級臺階時,當第一次跳一級時,還剩三級臺階,利用三級臺階的跳法,此時有4種跳法;當第一次跳二級時,還剩二級臺階,利用二級臺階的跳法,此時有2種跳法;當第一次跳三級時,還剩一級,利用一級臺階的跳法,此時有一種;當第一次直接跳四級時,此時只有一種跳法。所以總共有八種(1+2+4+1)跳法。
  • … …

        由上面的分析我們可以得出結論,當n大於一時,跳上n級臺階的跳法爲跳上1級,2級…n-1級的跳法和加一。
        下面爲n級臺階的跳法數:

臺階數 0 1 2 3 4 5 6 7
跳法數 0 1 2 4 8 16 32 64

        很容易發現規律,f(n) = 2 * f(n-1);,由此可以想到使用遞歸

Java代碼實現

	public int JumpFloorII(int target) {
        if(target <= 1){
            return target;
        }else{
            return 2*JumpFloorII(target-1);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章