斐波那契数列是一个数字序列,其中每个数字是前两个数字之和。这篇博文将展示如何使用 While 循环、For 循环和递归来编写一个 Python 程序来生成斐波那契数列。我们还将探讨如何使用循环查找总和。
Python 编程语言提供了几种生成斐波那契数列的方法,每种方法都有其优点和注意事项。通过理解和执行这些技术,您可以了解哪种程序可以高效地运行。
虽然有几种程序选项可以在 Python 中生成斐波那契数列,但您应该考虑两种主要方法。
- 迭代方法:使用 for 循环或 while 循环并结合 If else 语句来查找序列中的下一个数字。此方法是一种直接且高效的方法。
- 递归函数方法:此方法使用数学公式 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

此程序允许用户输入任何正整数,然后将其分配给变量 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)

使用列表的 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))

我们使用此斐波那契数列程序和递归示例定义了一个函数。以下函数接受整数值作为参数值并返回结果。
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)。请参考 斐波那契数列总和 文章。
评论已关闭。