LintCode 366 [Fibonacci]

原题

查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。
i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

样例
给定 1,返回 0
给定 2,返回 1
给定 10,返回 34

解题思路

  • 方法一: 递归求解
  • 方法二:动态规划 - 记忆化搜索

完整代码

# Method 1
class Solution:
    # @param n: an integer
    # @return an integer f(n)
    def fibonacci(self, n):
        if n == 1:
            return 0
        elif n == 2 or n == 3:
            return 1
        else:
            return self.fibonacci(n - 1) + self.fibonacci(n - 2)

# Method 2
class Solution:
    # @param n: an integer
    # @return an integer f(n)
    def fibonacci(self, n):
        T = [None] * (n+1)   # T = [None, None, None, None ......]
        T[0] = 0
        T[1] = 1
        for i in range (2, n+1):
            T[i] = T[i-1] + T[i-2]
        return T[n-1]

你可能感兴趣的:(LintCode 366 [Fibonacci])