所以我试图创建一个简单的递归循环,但我遇到了一个问题。
在第一个返回行之后,它告诉我其下的所有其他内容都无法访问,但它需要第一次返回递归才能工作。我做错了什么?
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;
}
}
答案 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;
}