gpt4 book ai didi

python - 阅读这个斐波那契函数

转载 作者:行者123 更新时间:2023-11-28 16:34:59 25 4
gpt4 key购买 nike

我正在尝试通读以下代码,但遇到了一些困难:

def fib2(n): # return Fibonacci series up to n
"Return a list containing the Fibonacci series up to n"
result = []
a, b = 0, 1

while b < n:
result.append(b) # see below
a, b = b, a+b

return result

f100 = fib2(100) # call it
f100 # write the result
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

我们开始于:

def fib2(n) 

据我了解,我们只是在创建定义,其中 n 将是要指定的参数。然后我们继续:

result = [] 

这对我来说似乎是要将输出发布到一个空列表中。从那里我们继续:

a, b = 0, 1 

我有点难以理解为什么我们指定“a = 0”和“b = 1”?是否只是指定一个初始值,其值并不重要?例如,我可以指定:

a, b = 2,3 

然后就从这里开始这个系列?如果我们再看这段代码:

while b < n: 
result.append(b)
a, b = b, a+b
return result

我假设这个 while look 只是满足函数的目标,给我们序列直到 B 不小于 n,同时追加到空列表。返回结果只是为了给我们打印输出吗?抱歉,我知道这是基本的,但我对函数的理解有点困难,所以我想我会选择一个非常基本的例子。

最佳答案

def fib2(n)
你是对的,它只是定义了一个 function名为 fib2这需要 n作为参数。

result = []
result将是 type list

a, b = 0, 1
对于斐波那契数列,重要的是要了解该数列添加了 n-1。和 n-2到它即将创造的值(value),这就是1 1 2 3 5 8...被 build 。

这样看:
0 1 1 2 3 5 8...
a b....其中 a 为 0,b 为 1,因此 b是序列的开始

while b < n:
result.append(b)
a, b = b, a+b
return result

Python 是一门伟大的语言,但它也可能令人困惑。
a, b = b, a+b让我们检查一下。 Python 允许对变量进行赋值,这样您就可以在不影响初始值的情况下对变量进行赋值。

也就是说,如果a是 0 和 b为 1,则 a, b = b, a+b看起来像这样:

a将变为 b ,但会将其存储为临时值 1。重要的是要知道 a 实际上并未被分配 b直到这行代码完成。
b将变为 a+b0+1并将其存储为新值。

现在如果b是 2 和 a是 1 让我们看看会发生什么:
a, b = b, a+b

a将变为 b但直到代码行之后,所以 a将变为 2
b将变为 a+b ,或者在本例中为 1+2 .如您所见,a首先重新分配实际上并没有改变 a 的值在这个表达式中。很简约!

考虑这种单行分配的一种更简单的方法是这样的:
a, b = b, a+b

a1 = b
b1 = a+b
a = a1
b = b1

是的,while b < n是检查满足 while 的条件环形。一次b不再小于 n循环将停止并且result会被退回

关于python - 阅读这个斐波那契函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com