剑指offer——跳台阶

剑指offer——跳台阶_第1张图片

#青蛙跳台阶
#一次只能跳1阶或2阶
#跳上n级台阶有多少种跳法

# 台阶   跳法
# 1		1
# 2 	2
# 3		3
# 4		5
# 5		8
# ....
# n 	f(n-1)+f(n-2)
#

class Solution1:
	def jumpFloor(self,n):
		if n<1:
			return 0
		elif n == 1 or n == 2:
			return n
		else:
			return self.jumpFloor(n-1) + self.jumpFloor(n-2)

class Solution2:
	def jumpFloor(self,n):
		if n<1:
			return 0
		elif n ==1 or n == 2:
			return n
		else:
			a = 1
			b = 2
			ret = 0
			for i in range(3,n+1):
				ret = a + b
				a = b
				b = ret
			return ret

if __name__ == '__main__':
	# s1 = Solution1()
	# print(s1.jumpFloor(5))
	s2 = Solution2()
	print(s2.jumpFloor(3))

视频教程

git源码

你可能感兴趣的:(剑指offer)