亲爱的会员我有一个疑问,我从以下理解这个概念:
https://stackoverflow.com/a/21990958/22419694 Python a, b = b, a +b
但是如果我们这样编写程序怎么办?
n=int(input("Enter a number"))
def fibo(n):
b=1
a=0
for i in range (n+1):
print(a)
b=a+b # b =0+1 ( a is not yet initialized to 1)which makes b=1
a=b # and then b is initialized with 'a' as per my logic so, a=1
print(fibo(n))
请帮忙
我正在尝试执行斐波那契数列,但仍然无法获得所需的结果,即 n=5 的斐波那契数列 0,1,1,2,3,5... 相反,结果是 = 0,1,2,4,8
在你的代码中
b=a+b -> 这里新的“b”值设置为先前的“a”值+先前的“b”值。
a=b -> 并且将上一步中分配的新“b”值分配为新的“a”值,而不是设置先前的“b”值。这是错误的。
尝试下面的代码
n=int(input("Enter a number"))
def fibo(n):
a=0
b=1
for i in range (n+1):
print(a)
c = a # to store previous a value
a = b # assign the previous b to the new a
b = c + b # assign previous a + previous b to new b
fibo(n)
输出
Enter a number5
0
1
1
2
3
5
斐波那契数列:0, 1, 0+1, (0+1)+1, (0+1) + ((0+1)+1)
变量:a、b、a+b、(a+b)+b、(a+b) + ((a+b)+b)
简化:a、b、(a+b)(或 c)、(c+b)(或 d)、d+c
a
的值传递给 b
并且 b
设置为 a+b
您的代码:
n=int(input("Enter a number"))
def fibo(n):
b=1
a=0
for i in range (n+1):
#when i=3
print(a) # 2
b=a+b # 2+2
a=b # 4
print(fibo(n))
你的代码是做什么的: 将 b 设置为
a+b
和 a+b
值与 a
相同
对于交换,您必须有
temp
变量,就像经典方式一样
temp = a + b # 1+2
a = b # 2
b = temp # 3
或Pythonic方式来实现:
a, b = b, a+b