递归错误 - 无法访问

时间:2018-05-26 20:56:05

标签: c#

所以我试图创建一个简单的递归循环,但我遇到了一个问题。

在第一个返回行之后,它告诉我其下的所有其他内容都无法访问,但它需要第一次返回递归才能工作。我做错了什么?

class Program
{
    public static int i = 5;
    static void Main(string[] args)
    {
        name(5);
    }

    public static int name(int i)
    { 
        if (i < 0)
        { }
        return i;
        if (i > 0)
        {
            Console.WriteLine(i);
            i--;
        }
        return i;
    }
}

3 个答案:

答案 0 :(得分:1)

您的部分方法代码无法访问,因为您之前正在调用return,并且该方法始终返回return i处的值,因此后面的代码将永远不会被执行。

if (i < 0)
{ }
return i;//problem here//code after this line gets never executed

递归方法是在方法体内调用自身的方法,所以如果你正在制作一个递归方法,你可能想要这样的东西:

public static int name(int i)
{
     if (i == 0)
        return i;
     Console.WriteLine(i);
     return name(--i);
}

<强> DEMO HERE

答案 1 :(得分:0)

安静简单。你有{}之外的第一个回报,所以它会发生在经历的任何事情上。你想把它放在if语句

public static int i = 5;
static void Main(string[] args)
{
    name(5);
}
public static int name(int i)
{
    if (i < 0)
    {
        return i;
    }

    if (i > 0)
    {
        Console.WriteLine(i);
        i--;
    }
    return i;
}

答案 2 :(得分:0)

  

我做错了什么?   你是在代码块的其余部分之前从函数返回的。我觉得你应该首先通过如何返回工作。不管怎样,只需执行以下操作

 if (i < 0)
 {
      return i;
 }