C# 即使满足条件,递归函数也会调用自身

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.

我这里有一个非常简单的代码,它使用递归来迭代队列类,我需要在屏幕上简单打印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;
}

}您缺少报税表:

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