1. 程式人生 > 實用技巧 >一週刷完劍指offer-8-跳臺階

一週刷完劍指offer-8-跳臺階

跳臺階

1. 題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。

一種變相的斐波那契數列

大家都知道斐波那契數列,前兩項相加為第三項的值

如:0, 1, 1, 2, 3, 5, 8, 13......

2. 示例

求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

3. 解題思路

如果非遞迴方法實現,可以看上一篇的斐波那契數列那篇,這裡直接使用遞迴的形式

但是,Python不能使用遞迴的方法,這樣子會導致複雜度很大,不能通過,所以要使用非遞迴的方法

4. Java實現

public class Solution {
    public int JumpFloor(int target) {
        // 斐波那契數列的一種變體
        if (target <= 1) return 1;
        if (target == 2) return 2;
        
        return (JumpFloor(target -1) + JumpFloor(target -2));
 
    }
}

5. Python實現

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        if (number <= 1):
            return 1
        if (number == 2):
            return 2
        a, b = 1, 2
        for i in range(number-2):
            a, b = b, a+b
        
        return b

如果您覺得本文有用,請點個“在看”