C#递归问题,当int = = 5时,++参数不会加1

时间:2015-09-27 19:59:00

标签: recursion

为什么“K”不能高于5?输出从0,1,2,3,4开始,循环到5。

class Program

    {
        static void Main(string[] args)
        {
            int k = 0;

            loop1(k);

        }

        static void loop1 (int k)
        {
            Console.WriteLine(k);

            k++;

            while (k <= 5)
            {
                loop1(k);
            }

        }
    }

console output

1 个答案:

答案 0 :(得分:0)

递归的一个规则是中断条件。在您的代码中,由于您使用while循环,因此没有。将其替换为if,您的代码将不再循环直到无限。

另一个规则是更接近目标。由于您希望显示一个高于5的数字和停止后的,您需要在条件之后增加k 的值。

递归函数的修改版本:

static void loop1 (int k)
{
    Console.WriteLine(k);

    if (k <= 5)
    {
        loop1(++k);
    }

}

预期结果如下:0 1 2 3 4 5 6