一周刷完剑指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
如果您觉得本文有用,请点个“在看”