“fizzbuzz”的代码不起作用。只有“fizzbuzz”多次返回

时间:2016-02-14 19:58:35

标签: ruby fizzbuzz

有人可以解释为什么以下代码无法正常工作?作为答案,它只返回“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 个答案:

答案 0 :(得分:1)

这里有两个问题:

  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)
    
  3. 以上是您的解决方案。

    始终打印'fizzbuzz'的原因,无论您传递给fizzbuzz方法的号码是什么,都是因为您要将number[idx]分配给本地变量num您应该在条件语句中使用idx计数器。

    您需要将数字从1打印到您传递给fizzbuzz的数字。对于3的倍数打印“Fizz”而不是数字和5的打印“Buzz”的倍数。对于3和5的倍数的数字打印“FizzBu​​zz&#34;。