详解斐波那契数列

斐波那契数列

简介

斐波那契数列又称黄金分割数列,是指由0和1开始,之后的每一项数字都是前两项数字的和。形式化的定义如下:

F(0) = 0, F(1) = 1
F(n) = F(n-1) + F(n-2),其中n > 1

斐波那契数列的前几项为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

作用

斐波那契数列在计算机科学中有广泛的应用,比如在算法设计(动态规划、贪心算法、分治算法等)中,快速筛选数据(排序、查找等)也会用到。

使用方法

使用递归

递归是计算斐波那契数列的一种常用方法,实现简单,但因为递归的特性,容易导致栈溢出(递归层数太多)。

代码示例:

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

使用循环迭代

循环迭代是计算斐波那契数列的另一种常用方法,相较于递归,在计算大型斐波那契数列时,循环迭代的效率更高。

代码示例:

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a, b = 0, 1
        for i in range(2, n+1):
            a, b = b, a+b
        return b

示例说明

以下是使用循环迭代计算斐波那契数列的一个示例:

# 计算前10个斐波那契数列
for i in range(10):
    print(fibonacci(i))

输出结果:

0
1
1
2
3
5
8
13
21
34

另一个示例是使用斐波那契数列在算法中的应用,比如使用斐波那契数列设计一个动态规划求解n阶爬楼梯问题的算法:

def climb_stairs(n):
    if n <= 2:
        return n
    f0, f1, f2 = 1, 1, 2
    for i in range(3, n+1):
        f0 = f1
        f1 = f2
        f2 = f0 + f1
    return f2

在此示例中,函数 climb_stairs 的参数为 n,返回值为一共有多少种爬楼梯的方法。该算法的内部实现中调用了 fibonacci 函数,用于计算斐波那契数列。