"fizzbuzz" 的代码无效。只有 "fizzbuzz" 返回了多次

Code for "fizzbuzz" doesn't work. Only "fizzbuzz" returned multiple times

谁能解释一下为什么下面的代码不能正常工作?它只有 returns "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)

这里有两个问题:

  1. num = number[idx]
  2. 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] 分配给局部变量 [=13] =] 您应该在条件语句中使用 idx 计数器的位置。

您需要打印从 1 到您传递给 fizzbuzz 的数字。对于 3 的倍数打印“Fizz”而不是数字,对于 5 的倍数打印“Buzz”。对于同时为 3 和 5 的倍数的数字,打印“FizzBu​​zz”。