Python:fib 函数内的 for 循环对我来说没有意义

Flo*_*ris 0 python loops function

在我的 Python 课程中,我有一个关于斐波那契数的练习。下面是第 4.1.5.7 章的全文。

我的问题是关于函数本身。特别是我对循环内部发生的事情感到困惑:

for i in range(3, n + 1):
    sum = elem1 + elem2
    elem1, elem2 = elem2, sum
return sum
Run Code Online (Sandbox Code Playgroud)

在第三行中,您会看到 elem1 逗号 elem2 等于 elem2 逗号总和。这是什么意思?

有人可以逐步解释我如何解释这个循环的内容吗?


  • 第 4.1.5.7 章全文:

一些简单的函数: 斐波那契数 你熟悉斐波那契数吗?

它们是使用非常简单的规则构建的整数序列:

序列的第一个元素等于一 (Fib1 = 1) 第二个元素也等于一 (Fib2 = 1) 每个后续数字都是前面两个数字的总和 (Fibi = Fibi-1 + Fibi-2) 这里是一些最初的斐波那契数列:

fib1 = 1
fib2 = 1
fib3 = 1 + 1 = 2
fib4 = 1 + 2 = 3
fib5 = 2 + 3 = 5
fib6 = 3 + 5 = 8
fib7 = 5 + 8 = 13
Run Code Online (Sandbox Code Playgroud)

您如何看待将其实现为功能?

让我们创建我们的 fib 函数并测试它。这里是:

def fib(n):
    if n < 1:
         return None
    if n < 3:
        return 1

    elem1 = elem2 = 1
    sum = 0
    for i in range(3, n + 1):
        sum = elem1 + elem2
        elem1, elem2 = elem2, sum
    return sum

for n in range(1, 10): # testing
    print(n, "->", fib(n))
Run Code Online (Sandbox Code Playgroud)

仔细分析 for 循环体,找出我们如何通过后续的斐波那契数移动 elem1 和 elem2 变量。

代码的测试部分产生以下输出:

1 -> 1
2 -> 1
3 -> 2
4 -> 3
5 -> 5
6 -> 8
7 -> 13
8 -> 21
9 -> 34
Run Code Online (Sandbox Code Playgroud)

Cisco Networking Academy 提供的来源 - 课程名称:PCAP - Python 编程基础 - 模块 4,第 4.1.5.7 章,标题为“创建函数 | Fibonacci 数”。

Igo*_*vin 5

在python中,a, b = c, d表示“设置a=c和b=d”