作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我遇到了一个 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/
我是一名优秀的程序员,十分优秀!