首页 > 代码库 > LintCode Python 入门级题目 斐波纳契数列
LintCode Python 入门级题目 斐波纳契数列
原题描述:
查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
- 前2个数是 0 和 1 。
- 第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
题目分析:
开始的想法,通过递归实现输出fib(n-1)+fib(n-2)的值计算,原理正确,算法复杂度高,导致运行时间超过lintcode限制:
class Solution: # @param n: an integer # @return an integer f(n) # 递归实现 def fibonacci(self, n): if n == 1: return 0 elif n == 2: return 1 else: return self.fibonacci(n-1) + self.fibonacci(n-2)
修改为迭代实现,将斐波纳契数保存到列表中,循环n-2次,每次将数列最后一个元素[-1]和倒数第二个元素[-2]相加并追加到列表中,最终返回列表最后一个元素~
class Solution: # @param n: an integer # @return an integer f(n) # 通过for循环迭代实现 def fibonacci(self, n): num = [0,1] if n == 1: return 0 elif n ==1: return 1 for i in range(0,n-2): num.append(num[-1] + num[-2]) return num[-1]
LintCode Python 入门级题目 斐波纳契数列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。