如何解决Python 重复问题的迭代
我被要求按照方程 x(n) = 2*x(n-1) - x(n-2)
for n >= 3,以及 x(1) = 0
和 x(2) = 1
找到重复序列的第 30 个。
按照斐波那契迭代的逻辑,我想出了以下代码:
def loop(n):
a = 0
b = 1
for i in range(30):
a,b = b,2 * b - a
return a
在 loop(30)
中,我返回 30,但我从数学上知道答案应该是 29。代码似乎向前迈进了一步。任何人都可以帮助指出我的代码中不正确的地方吗?
解决方法
您应该只运行循环 n - 1
次。因为赋值 a = 0
初始化了 x1
。然后在每次循环之后,a
被分配给下一个值(来自 x2
)
def loop(n):
a = 0
b = 1
for i in range(n - 1):
a,b = b,2*b - a
return a
print(loop(30))
# 29
,
可以注意到第一次a=1的值(a=b=1;),根据a的条件值加1(a=b when b=2*b-1)所以在接下来的第 n 次迭代中,输出将为 n。;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。