Ruby:我在 JavaScript 中编写的程序在 Ruby 中的工作方式不同
Ruby: Program I wrote in JavaScript not working the same way in Ruby
我最初在 JavaScript 中写了这篇文章,并张贴在这里寻求帮助(我得到了帮助)。然后我将它写在 Ruby 中,但它没有按预期工作。 Ruby.
中的代码看起来几乎相同
预期结果:29
实际结果:2639
prime = 0
temp = 0
factor = 3
i = 3
num = 13195
while factor < num
if num % factor == 0
while i < factor
if factor % i == 0
temp = prime
break
else
temp = factor
end
i = i + 2
end
// i initializes back to 3
// so next factor can properly iterate through loop
i = 3
prime = temp
end
factor = factor + 2
end
i = 3
puts prime
这是我作为 JavaScript 程序提出此问题时的答案 link:
在Javascript中,for (let i = 3; i < factor; i += 2)
初始化i
为3,然后循环。但是在您的 Ruby 代码中,您只在一开始就初始化了 i
一次,然后您的每个循环都在重复使用 i
的那个值而不将其重置回 3.
翻译 for 循环的 Ruby 方式是这样的
(3...factor).step(2) do |i|
# loop code
end
这会创建一个局部块 i
,它会在循环的每次迭代中重置,并且不会受到外部作用域的干扰。
我最初在 JavaScript 中写了这篇文章,并张贴在这里寻求帮助(我得到了帮助)。然后我将它写在 Ruby 中,但它没有按预期工作。 Ruby.
中的代码看起来几乎相同预期结果:29
实际结果:2639
prime = 0
temp = 0
factor = 3
i = 3
num = 13195
while factor < num
if num % factor == 0
while i < factor
if factor % i == 0
temp = prime
break
else
temp = factor
end
i = i + 2
end
// i initializes back to 3
// so next factor can properly iterate through loop
i = 3
prime = temp
end
factor = factor + 2
end
i = 3
puts prime
这是我作为 JavaScript 程序提出此问题时的答案 link:
在Javascript中,for (let i = 3; i < factor; i += 2)
初始化i
为3,然后循环。但是在您的 Ruby 代码中,您只在一开始就初始化了 i
一次,然后您的每个循环都在重复使用 i
的那个值而不将其重置回 3.
翻译 for 循环的 Ruby 方式是这样的
(3...factor).step(2) do |i|
# loop code
end
这会创建一个局部块 i
,它会在循环的每次迭代中重置,并且不会受到外部作用域的干扰。