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

为什么我的FizzBuzz循环满足条件就停止?仅执行一次如何修复

问题核心原因
  • 循环内提前触发return:匹配到第一个符合条件的数字(15)时直接return message退出整个方法,循环直接终止,不会遍历后续数字。
  • 未处理公倍数场景:先判断是否为3的倍数,匹配后直接赋值返回,不会再校验是否同时为5的倍数,也没有拼接两个标识的逻辑。
  • 结果未做累加:每次匹配到符合条件的数字都会覆盖message变量,无法保存所有数字的匹配结果。
  • 参数校验逻辑错误:仅当起始数字小于结束数字时才进入循环,若起止数字相等且符合匹配条件会直接返回空。
修复后完整代码
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(FizzBuzz(15, 22)); 
    }

    static string FizzBuzz(int première, int dernière)
    {
        string message = "";
        // 调整参数校验逻辑,起止相等时也正常执行
        if (première <= dernière)
        {
            while (première <= dernière)
            {
                string currentResult = "";
                // 优先拼接3的倍数标识,再拼接5的倍数标识,自动适配公倍数场景
                if (EstDivisiblePar3(première))
                {
                    currentResult += "Fizz";
                }
                if (EstDivisiblePar5(première))
                {
                    currentResult += "Buzz";
                }
                // 仅符合条件的内容追加到最终结果
                if (!string.IsNullOrEmpty(currentResult))
                {
                    message += $"{première}: {currentResult}\n";
                }
                première++;
            }
        }
        else
        {
            message = "« Incohérence des paramètres de FizzBuzz ».";
        }
        // 所有数字遍历完成后统一返回结果
        return message;
    }

    static bool EstDivisiblePar3(int num)
    {
        return (num % 3) == 0;
    }

    static bool EstDivisiblePar5(int num)
    {
        return (num % 5) == 0;
    }
}
输出结果示例
15: FizzBuzz
18: Fizz
20: Buzz
21: Fizz

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:03