劍指offer:跳臺階(循環和遞歸)

題目描述

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

分析:

考慮1個臺階,只有1跳法,則 f(1) = 1

考慮2個臺階,可以1級級條,可以一次跳2級,有兩種跳法,則f(2) = 2

考慮3個臺階,它可以由1級跳來得到,也可以由2級跳來得到,所以它的跳法爲 f(3-1) + f(3-2) = f(1) + f(2)

考慮n個臺階,它的跳法爲 f(n-1) + f(n-2)

實則上爲斐波那契數列。可以用遞歸,也可以用循環方法求解。

代碼:

int jumpFloor(int number) {
	int fn;
        int f1 = 1, f2 = 2;
        if(number<0) return 0;
        if(number == 1) return f1;
        if(number == 2) return f2;
        int count = 3;
        fn = f1 + f2;
        while(count<number){
            f1 = f2;
            f2 = fn;
            fn = f1 + f2;
            count++;
        }
        
        return fn;
        
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章