You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby实现FizzBuzz:省略3&&5判断的Fizz输出缺失问题求解

问题根因

你的代码bug出在分支返回逻辑上:else块仅和num % 5 == 0的判断绑定。当数字仅能被3整除、无法被5整除时,代码虽然给result拼接了"Fizz",但最终会走到5整除判断对应的else分支,直接返回原始数字num,没有返回已经拼接好的结果串,才会出现本该输出Fizz的位置直接打印原始数字的异常。

你想省去num % 3 == 0 && num % 5 == 0冗余判断的思路是完全可行的,只要修正返回逻辑即可。

正确实现代码
def fizzbuzz(num)
  result = ""
  result << "Fizz" if num % 3 == 0
  result << "Buzz" if num % 5 == 0
  # 结果串为空说明既不被3也不被5整除,返回原数,否则返回拼接结果
  result.empty? ? num : result
end

def fizzbuzz_printer
  # 1..100是双点闭区间,正好覆盖1到100的所有整数
  (1..100).each do |num|
    puts fizzbuzz(num)
  end
end

fizzbuzz_printer
逻辑说明
  • 不需要单独判断同时被3和5整除的场景:满足两个整除条件时会依次拼接Fizz和Buzz,自动得到FizzBuzz结果
  • 仅被3整除时返回Fizz,仅被5整除时返回Buzz,都不满足时返回原始数字,完全符合FizzBuzz规则
  • 没有重复的取模判断,执行效率更高

内容的提问来源于stack exchange,提问作者BigBoyyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:55:00