python6_斐波那契数列

# 题目:斐波那契数列。

#

# 程序分析:斐波那契数列(Fibonacci sequence),

# 又称黄金分割数列,指的是这样一个数列:

# 0、1、1、2、3、5、8、13、21、34、……。

#

# 在数学上,费波那契数列是以递归的方法来定义:

#

# F0 = 0    (n=0)

# F1 = 1    (n=1)

# Fn = F[n-1]+ F[n-2](n=>2)

# 官方解答:

# 方法一:

def fib_1(n):

    a, b = 1, 1

    for i in range(n - 1):

        a, b = b, a + b

    return a

# 输出了第10个斐波那契数列

print(fib_1(10))

# 方法二:

# 使用递归

def fib_2(n):

    if n == 1 or n == 2:

        return 1

    return fib_2(n - 1) + fib_2(n - 2)

# 输出了第10个斐波那契数列

print(fib_2(10))

# 方法三:

def fib_3(n):

    if n == 1:

        return [1]

    if n == 2:

        return [1, 1]

    fibs = [1, 1]

    for i in range(2, n):

        fibs.append(fibs[-1] + fibs[-2])

    return fibs

# 输出前 10 个斐波那契数列

print(fib_3(10))

# 个人见解:

def fib_4(n):

    l = [1]

    i = 1

    a = 0

    b = 1

    while i < n:

        c = b + a

        l.append(c)

        a = b

        b = c

        i += 1

    return l

print(fib_4(10))

我觉得方法二的递归用的非常巧妙,大量减少代码量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。