Python 斐波那契数列程序

斐波那契数列是一个数字序列,其中每个数字是前两个数字之和。这篇博文将展示如何使用 While 循环、For 循环和递归来编写一个 Python 程序来生成斐波那契数列。我们还将探讨如何使用循环查找总和。

Python 编程语言提供了几种生成斐波那契数列的方法,每种方法都有其优点和注意事项。通过理解和执行这些技术,您可以了解哪种程序可以高效地运行。

虽然有几种程序选项可以在 Python 中生成斐波那契数列,但您应该考虑两种主要方法。

  1. 迭代方法:使用 for 循环或 while 循环并结合 If else 语句来查找序列中的下一个数字。此方法是一种直接且高效的方法。
  2. 递归函数方法:此方法使用数学公式 F(n) = F(n-1) + F(n-2) 递归地重复调用函数,并更新数字。

使用 While 循环的 Python 斐波那契数列程序

斐波那契数列以 0 和 1 开始。每个后续数字是前两个数字之和(0 + 1、1 + 1、……)。斐波那契数列数字的序列是 0、1、1、2、3、5、8、13、21、34、55、89、……、N,数学上定义如下:

F(0) = 0

F(1) = 1

F(n) = F(n-1) + F(n-2)

此程序允许用户输入任何正整数。接下来,此程序使用 While 循环显示从 0 到用户指定数字的斐波那契数列数字。

Number = int(input("\nPlease Enter the Range : "))

# Initializing First and Second Values
i = 0
First_Value = 0
Second_Value = 1
           
# Find & Displaying
while(i < Number):
    if(i <= 1):
        Next = i
    else:
        Next = First_Value + Second_Value
        First_Value = Second_Value
        Second_Value = Next
    print(Next)
    i = i + 1
Python Fibonacci Series program using While Loop

此程序允许用户输入任何正整数,然后将其分配给变量 Number。接下来,我们声明了三个整数变量 i、First_Value、Second_Value 并分配了值。

下面的 While 循环确保循环从 0 开始且小于用户给定的数字。我们在斐波那契数列程序的 While 循环内使用了 If 语句。

  • 如果 i 小于或等于 1,则 Next = i
  • 如果 i 大于 1,则执行 Else 块中的计算。

让我们通过迭代来看一下此 While 循环在此 Python 斐波那契数列程序示例中的工作原理。在此示例中,用户输入的数字为:Number = 4,i = 0,First_Value = 0,Second_Value = 1。

While 循环第一次迭代

  • While (0 < 4) 为 TRUE。因此,程序开始执行 while 语句中的语句。
  • 我们在 while 循环内有 If 语句,并且条件 if (0 <= 1) 为 TRUE。因此,Next = 0,它会退出 if 语句块。
  • Print 语句 print(Next) 打印值 0。
  • 最后,i 增量为 1。

斐波那契数列程序的 While 循环第二次迭代。

  • While (1 < 4) 为 TRUE。
  • if (1 <= 1) 为 TRUE。因此,Next = 1
  • 它打印值 1。
  • i 增量为 1。

第三次迭代:在此示例程序中,While (2 < 4) 为 TRUE。条件 if (2 <= 1) 为 FALSE,因此 else 块中的语句开始执行。

Next = First_Value + Second_Value
Next = 0 + 1 = 1
First_Value = Second_Value = 1
Second_Value = Next = 1

接下来,Python 斐波那契数列程序中的 Print 语句 print(Next) 打印值 1。最后,i 增量为 1。

第四次迭代:while (3 < 4) 为 TRUE。因此,程序开始执行 while 语句中的语句。

条件 if (3 <= 1) 为 FALSE
Next = 1 + 1 = 2
First_Value = Second_Value = 1
Second_Value = Next = 2

接下来,Print 语句 print(Next) 打印值 2。最后,i 增量为 1。

第五次迭代:While (4 < 4) 为 FALSE,它退出 while 循环。请参阅 For 循环

我们最终得到的 Next 值是:0 1 1 2

使用 For 循环的 Python 斐波那契数列程序

此程序使用 For 循环显示从 0 到用户指定值的斐波那契数列数字。

# It will start at 0 and travel upto below value
Number = int(input("Please Enter the Range : "))

# Initializing First and Second Values 
First = 0
Second = 1
           
# Find & Displaying
for Num in range(0, Number):
    if(Num <= 1):
        Next = Num
    else:
        Next = First + Second
        First = Second
        Second = Next
    print(Next)
Fibonacci Series program using For Loop

使用列表的 Python 斐波那契数列程序

之前的循环示例程序使用了传统的斐波那契数列生成方法。但是,您可以利用列表并避免使用 If else 语句。在此示例中,我们初始化了数字 0 和 1 的 fibSeq 列表,For 循环从 2 迭代到给定数字。

For 循环中的代码通过将前两个数字相加来计算每个斐波那契数。列表的 append 函数将数字添加到 fibSeq 列表。时间复杂度和空间复杂度为 O(n)。

n = int(input("Enter the Range = "))

fibSeq = [0, 1]
for i in range(2, n + 1):
    fibSeq.append(fibSeq[i-1] + fibSeq[i-2])

print(fibSeq)

使用递归的 Python 斐波那契数列程序

此程序使用递归概念显示从 0 到用户给定值的斐波那契数列数字。

查找斐波那契数列数字的递归方法包括定义一个带有 if else 语句的函数,以逃避无限循环并调用自身。此程序使用我们在开头提到的标准数学公式,即 F(n) = F(n-1) + F(n-2)。

# Recursive Function Beginning

def fibFind(num):
    if(num == 0):
        return 0
    elif(num == 1):
        return 1
    else:
        return (fibFind(num - 2) + fibFind(num - 1))

# End of the Function

# It will start at 0 and travel upto below value
num = int(input("\nPlease Enter the Range Number: "))

# Find & Displaying Them
for Num in range(0, num):
    print(fibFind(Num))
Python Fibonacci Series Program using Recursion

我们使用此斐波那契数列程序和递归示例定义了一个函数。以下函数接受整数值作为参数值并返回结果。

def fibFind(num):

让我们看一下上面指定函数中的 Elif 语句

  • if (num == 0) 检查给定数字是否为 0。如果为 TRUE,则函数返回 Zero 值。
  • if(num == 1) 检查给定数字是否为 1。如果为 TRUE,则函数返回 One 值。
  • 并且,如果数字大于 1,则执行 else 块中的语句。

我们在 Else 块中递归调用该函数来显示结果。

return (fibFind(num-2)+ fibFind(num-1))

为了演示使用递归的斐波那契数列程序,Number = 2

fibFind(num-2)+ fibFind(num-1)

fibFind(2 – 2)+ fibFind(2 – 1)

这意味着 (fibFind(0)+ fibFind(1))

return (0 + 1) = return 1。

时间复杂度和空间复杂度分别为 O(2^n) 和 O(n)。请参考 斐波那契数列总和 文章。

评论已关闭。