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

C#递归问题:如何将输出末尾的0修改为1

C#递归输出指定序列问题修正

需要输出的目标序列:1 2 3 4 5 @ 10 8 6 4 2 1,当前代码输出末尾为0,需修正为1。原代码如下:

public static void Recursive(int a, int b)
{
    if (a > b)
    {
        Console.WriteLine("@");
        Console.WriteLine(a * 2 - 2);
    }
    else
    {
        Console.WriteLine(a);
        Recursive(a + 1, b);
        Console.WriteLine(a*2-2);
    }
}

问题原因

递归回溯到a=1时,执行a*2-2得到0,不符合目标序列的最后一位1。

修正方案

在输出回溯值时,判断当前a是否为1,若是则直接输出1,否则按原逻辑计算:

public static void Recursive(int a, int b)
{
    if (a > b)
    {
        Console.WriteLine("@");
        Console.WriteLine(a * 2 - 2);
    }
    else
    {
        Console.WriteLine(a);
        Recursive(a + 1, b);
        // 针对a=1的情况单独处理,输出1而非计算值
        Console.WriteLine(a == 1 ? 1 : a * 2 - 2);
    }
}

说明

  • 当a > b时,a的值为6,6*2-2=10,符合目标序列的第一个回溯值;
  • 回溯过程中,a=5输出8、a=4输出6、a=3输出4、a=2输出2,均符合要求;
  • 当a=1时,直接输出1,修正了原代码的0值问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:25:29