gpt4 book ai didi

ruby - 理解 ruby​​ 代码(斐波那契)

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:34 25 4
gpt4 key购买 nike

我遇到了一个 ruby​​ 方法,它是一个迭代的斐波那契数列。(不是递归)代码中有一行我以前从未见过,我不确定它在做什么。方法如下:

方法:

def practice(n)
return 0 if n == 0
num1 = 2
num2 = 1
n.times do
num1, num2 = num2, (num1 + num2)
end
num1
end

如果有人可以迭代并解释正在发生的事情,我将永远感激不已。但是,主要是我不理解这部分代码 -

n.times do
num1, num2 = num2, (num1 + num2)
end

num1, num2 = num2 的作用/含义是什么?

最佳答案

代码行 num1, num2 = num2, (num1 + num2) 是一次分配两个变量。 num1 获取 num2 的旧值,而 num2 获取新值 (num1 + num2)

在单行代码中进行多项赋值可以让您在不需要使用临时变量的情况下执行这两项操作。例如,这将不起作用:

num1 = num2
num2 = (num1 + num2)

因为 num1 在添加步骤之前已经被新值覆盖,所以 num2 将被分配错误的值。单行版本相当于:

temp = (num1 + num2)
num1 = num2
num2 = temp

作为引用,这叫做 parallel assignment或者有时多重赋值

关于ruby - 理解 ruby​​ 代码(斐波那契),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934819/

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