Recursion 递归问题&x2B+;参数不为';当int=5时,t加1

Recursion 递归问题&x2B+;参数不为';当int=5时,t加1,recursion,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”不能高于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);
            }

        }
    }
类程序
{
静态void Main(字符串[]参数)
{
int k=0;
第1(k)条;
}
静态void loop1(int k)
{
控制台写入线(k);
k++;

while(k递归规则之一是中断条件。在代码中没有中断条件,因为您使用的是
while
循环。将其替换为
if
,您的代码将不再循环到无穷大

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

递归函数的修改版本:

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

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

}
static void loop1(int k)
{
控制台写入线(k);

if(k递归规则之一是中断条件。在代码中没有中断条件,因为您正在使用
while
循环。将其替换为
if
,您的代码将不再循环到无穷大

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

递归函数的修改版本:

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

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

}
static void loop1(int k)
{
控制台写入线(k);

if(k)必须使用条件而不是像
while
这样的循环,用
if
.ty替换它。if工作正常,但我无法理解“while”和“do-while”有什么问题。我会尝试在回答中进一步解释问题。你必须使用条件而不是像
while
,用
if
.ty替换它。if可以正常工作,但我无法理解“while”“do while”有什么问题。我会尝试在回答中进一步解释问题。