[对不起,我是编程新手。]
这是针对项目欧拉问题#2的。目标是计算不超过400万的所有偶数斐波纳契数之和。对于不熟悉斐波那契数字的任何人,斐波那契数字就是简单的数字,它是序列中前两个数字的和。例如,前几个斐波那契数是1,2,3,5,8,13,21,34 ...
下面我的代码以一些变量开头,然后是while循环,最后是for循环。
n = 0
n2 = 1
fibsum = 0
fibrange = range(1,4000001)
while (n2 <= 4000000):
n2 = n2 + n
n = n2 - n
if n2 % 2 == 0:
fibsum += n2
print (fibsum)
# for n2 in fibrange:
# n2 = n2 + n
# n = n2 - n
# if n2 % 2 == 0:
# fibsum += n2
# print(fibsum)
就像我说的那样,我的while循环就像一个超级按钮一样工作,但是当我运行for循环时,fibsum的输出为0。因此该值根本没有改变。
我尝试用range (1, 4000001)
代替fibrange
。我真的不知道还有什么尝试。这就像我的第4个或第5个程序。
答案 0 :(得分:1)
在for
函数中使用range
循环,变量n2
的值仅根据range
函数而变化。您无法在{{1}中手动更改变量},同时使用for
函数。
答案 1 :(得分:0)
for
和while
是不同类型的循环。
while
:在给定条件为TRUE时重复一个语句或一组语句。它在执行循环主体之前测试条件。
for
:多次执行一系列语句,并简化管理循环变量的代码。
使用while
,您可以执行以下操作:
a = 0
b = 1
target = 4000000
result = 0
while a <= target:
if a % 2 == 0:
result +=a
a, b = b, a + b
print(result)
使用for
:
a, b = 0, 1
result = 0
target = 4000000
fib_sequence = 35 # -> the length of fibonacci sequence
for _ in range(fib_sequence):
if a % 2 == 0:
result +=a
a, b = b, a + b
if a >= target: break
print(result)