有人可以解释为什么以下代码无法正常工作?作为答案,它只返回“fizzbuzz”100次。谢谢。
def fizzbuzz(number)
idx = 0
while idx <= number
num = number[idx]
if num % 3 == 0 && num % 5 == 0
puts 'fizzbuzz'
elsif num % 5 == 0
puts 'buzz'
elsif num % 3 == 0
puts 'fizz'
else
puts num
end
idx += 1
end
end
fizzbuzz(100)
答案 0 :(得分:1)
这里有两个问题:
num = number[idx]
idx
变量应该用于支票而不是num
:
def fizzbuzz(number)
idx = 0
while idx <= number
if idx % 3 == 0 && idx % 5 == 0
puts 'fizzbuzz'
elsif idx % 5 == 0
puts 'buzz'
elsif idx % 3 == 0
puts 'fizz'
else
puts idx
end
idx += 1
end
end
fizzbuzz(100)
以上是您的解决方案。
始终打印'fizzbuzz'
的原因,无论您传递给fizzbuzz
方法的号码是什么,都是因为您要将number[idx]
分配给本地变量num
您应该在条件语句中使用idx
计数器。
您需要将数字从1打印到您传递给fizzbuzz
的数字。对于3的倍数打印“Fizz”而不是数字和5的打印“Buzz”的倍数。对于3和5的倍数的数字打印“FizzBuzz&#34;。