我有一个非常简单的代码,它使用递归来迭代队列类我需要在屏幕上简单打印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.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;
}
}
答案 0 :(得分:7)
您错过了回复:
if (q.Count != 0)
{
return getID(id); // Here
}
目前您的代码调用getID
,但只是丢弃结果。然后当控件到达方法的末尾时,它返回id
。
答案 1 :(得分:2)
您没有对递归调用的返回值执行任何操作,因此顶级getID
只会在触及底部时返回其参数。
在return getID(id)
测试中尝试if
。
答案 2 :(得分:2)
替换
if (q.Count != 0)
{
getID(id);
}
与
if (q.Count != 0)
{
return getID(id);
}