递归函数调用自身甚至条件满足

时间:2011-08-26 09:20:14

标签: 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.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;
}

}

3 个答案:

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