70 | Climbing Stairs | 40.90% | 爬楼梯,斐波那契数列 |
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 7 22:43:23 2018
@author: vicky
"""
#思路:斐波那契数列问题:
# n<=2,此时只有一种或两种。
# n>2时,对于每一个台阶i,要到达台阶,最后一步都有两种方法,从i-1迈一步,或从i-2迈两步。
# 也就是说到达台阶i的方法数=达台阶i-1的方法数+达台阶i-2的方法数
# F[1]=1
# F[2]=2
# F[n]=F[n-1]+F[n-2](n>2)
#动态
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
f1=1
f2=2
k=3
if n==1:
return f1
if n==2:
return f2
while k<=n:
f=f1+f2
f1=f2
f2=f
k=k+1
return f
#递归,时间久
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
f1=1
f2=2
if n==1:
return f1
elif n==2:
return f2
else:
return self.climbStairs(n-1)+self.climbStairs(n-2)
#如果函数输入有self,则递归调用时候需要在函数前面加self.
n=2
print(Solution().climbStairs(n))