C# 即使满足条件,递归函数也会调用自身
我这里有一个非常简单的代码,它使用递归来迭代队列类,我需要在屏幕上简单打印6,但它打印1,请告诉我哪里错了C# 即使满足条件,递归函数也会调用自身,c#,asp.net,C#,Asp.net,我这里有一个非常简单的代码,它使用递归来迭代队列类,我需要在屏幕上简单打印6,但它打印1,请告诉我哪里错了 protected void Button1_Click(object sender, EventArgs e) { q.Enqueue(1); q.Enqueue(2); q.Enqueue(3); q.Enqueue(4); q.Enqueue(5); q.Enqueue(6); long id = getID(Convert.
protected void Button1_Click(object sender, EventArgs e)
{
q.Enqueue(1);
q.Enqueue(2);
q.Enqueue(3);
q.Enqueue(4);
q.Enqueue(5);
q.Enqueue(6);
long id = getID(Convert.ToInt64(q.Dequeue()));
Response.Write(id);
}
private long getID(long id)
{
if (id == 6)
{
return id;
}
else
{
id = Convert.ToInt64(q.Dequeue());
if (q.Count != 0)
{
getID(id);
}
else
{
}
}
return id;
}
}您缺少报税表:
if (q.Count != 0)
{
return getID(id); // Here
}
当前,您的代码调用
getID
,但只是放弃结果。然后,当控件到达方法的末尾时,它返回id
您没有对递归调用的返回值做任何操作,因此顶级getID
将在到达底部时简单地返回其参数
在if
测试中尝试返回getID(id)
。替换
if (q.Count != 0)
{
getID(id);
}
与
我建议在代码的开头放一个断点,然后一次遍历每一行,以了解它在做什么。
if (q.Count != 0)
{
return getID(id);
}