C# 递归错误-无法访问

C# 递归错误-无法访问,c#,C#,所以我试图创建一个简单的递归循环,但我遇到了一个问题 在第一个返回行之后,它告诉我它下面的所有内容都是不可访问的,但是它需要第一个返回才能使递归工作。我做错了什么 class Program { public static int i = 5; static void Main(string[] args) { name(5); } public static int name(int i) { if (i &l

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

在第一个返回行之后,它告诉我它下面的所有内容都是不可访问的,但是它需要第一个返回才能使递归工作。我做错了什么

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;
    }
}

安静简单。您在{}之外有第一个返回,因此它发生在任何经过的地方。你想把它放在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;
}
我做错了什么? 您是在代码块的其余部分之前从函数返回的。我觉得您应该首先了解返回的工作原理。无论如何,只需执行以下操作


部分方法代码是不可访问的,因为您在它之前调用return,并且该方法总是在return i处返回值,因此它之后的代码将永远不会执行

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

你需要校对你的文章和代码。名称中的第一个return语句将始终被命中。上面的if语句有一个空块附加到{}-所以当if被命中时,它什么也不做。无论是否命中if,下一条指令都是返回。还要注意,要实现递归,必须从name中再次调用name。我猜你希望它紧跟在I-;在处理很少需要的递归之前,我认为您需要更熟悉语言和调试器。我在这里没有看到递归。除了目前给出的答案,你想用递归实现什么?啊,我明白了,谢谢,我修正了它。我明白了,所以我的问题是我没有将程序运行回它自己。如果你要创建一个递归方法,该方法必须在方法体内部调用自己,因此你的方法不是递归的。另一个问题在于无法访问的代码,因为您在它之前调用return,而该方法总是在这一行代码处返回值,因此它之后的代码将永远不会执行。@LionBlaze查看我发布的演示!这个答案或问题中没有递归。
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);
}