题目

大家都知道斐波那契数列,现在要求输入一个整数 n,请你输出斐波那契数列的第 n 项(从 0 开始,第 0 项为 0)。n<=39

与跳台阶题目类似:一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)

解题思路


递归解法

但是运行效率低,且有运算重复的地方,容易导致递归栈溢出

  1. # -*- coding:utf-8 -*-
  2. class Solution:
  3. def Fibonacci(self, n):
  4. # write code here
  5. if n == 0:
  6. return 0
  7. if n == 1:
  8. return 1
  9. return self.Fibonacci(n-1) + self.Fibonacci(n-2)

循环方式实现

  1. class Solution:
  2. def Fibonacci(self, n):
  3. # write code here
  4. if n == 0:
  5. return 0
  6. if n == 1:
  7. return 1
  8. first = 0
  9. second = 1
  10. result = 0
  11. for i in range(n):
  12. result = first + second
  13. first = second
  14. second = result
  15. return first
  16. # -*- coding:utf-8 -*-
  17. class Solution:
  18. def jumpFloor(self, number):
  19. # write code here
  20. if number == 0:
  21. raise Exception("ERR")
  22. if number == 1:
  23. return 1
  24. if number == 2:
  25. return 2
  26. a = 1
  27. b = 1
  28. result = 0
  29. for i in range(number):
  30. a, b = b, a+b
  31. return a