puts "enter a number"
x = gets.chomp.to_i
y = 0
while x != 1
y += 1
if x % 2 == 0
x = x / 2
else
x = x*3 + 1
end
print "#{x} "
end
puts "\nThe number of sequence is #{y+1}"
嗨,如果我输入负数或0,我将得到一个无限循环。如果我的数字是0或负数,我该如何避免进入循环。
答案 0 :(得分:1)
您可以使用x > 1
即
puts "enter a number"
x = gets.chomp.to_i
# if you want to consider negative as positive then x = gets.chomp.to_i.abs
y = 0
while (x > 1)
y += 1
if x % 2 == 0
x = x / 2
else
x = x*3 + 1
end
print "#{x} "
end
puts "\nThe number of sequence is #{y+1}"
希望有所帮助
答案 1 :(得分:0)
回答你的问题:
您的代码运行良好,并完全按照要求执行操作:
while x is not 1 OR x is smaller than 0 do this codeblock
。
如果将x设置为负数,则x将永远不会为正数,因此它将永远运行(因为x总是小于0)。
所以,代码是正确的,但它背后的逻辑有一个缺陷:)