剑指offer-JZ8 跳台阶
难度:简单
考点: 递归
问题描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
类似斐波那契数列,找规律,发现是递归的,同斐波那契,如果直接写递归,时间复杂度过高,所以依然用循环来做
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here # number = 0 不存在 # number = 1 1种 # number = 2 2种 # number = 3 3种 11 12 21 # number = 4 5种 1111 121 112 211 22 # 通过找规律发现 f(n) = f(n-1) + f(n-2) 当n>2 # n = 2 f(2)=2 # n = 1 f(1)=1 if number < 1: return 0 if number == 1: return 1 if number == 2: return 2 a = 1 b = 2 ret = 0 for i in range(3,number+1): ret = a+b a = b b = ret return ret