1

我正在尝试在 C# 中学习递归。我可以在控制台应用程序中做一个简单的倒计时,但我不确定如何在 ASP.NET Web 应用程序中做同样的事情。我想在列表框中显示结果,但我无法在静态函数中访问列表框。

这是我的控制台应用程序:

    static void Main(string[] args)
    {
        int startInt = 100;
        countDown(startInt);
        Console.ReadLine();

    }
    public static void countDown(int integer)
    {
        if (integer == 1)
        {
            Console.WriteLine(integer);
        }
        else 
        {
            Console.WriteLine(integer);
            integer--;
            countDown(integer);
        }
    }   

关于让它在将在列表框中显示数字的 Web 应用程序中工作的任何帮助?

4

2 回答 2

1

您不需要将其保持为静态,因为您不再从静态函数调用它。使用类似这样的 countDown 函数

public void countDown(int integer)
{
    if (integer > 0)
    {
        ListBox1.Items.Add(integer.ToString());
        integer--;
        countDown(integer);
    }
} 

应该可以正常工作。我把它测试了出来

int startInt = 100;
countDown(startInt);

在 Page_Load 方法中,ListBox 按预期显示。

于 2013-04-20T22:28:53.687 回答
0

我不确定是否存在性能问题或更好的解决方案。但这很有效,并且可能是理解递归的一个很好的例子。

protected void Page_Load(object sender, EventArgs e)
{
    int startInt = 100;
    form1.Controls.Add(countDown(startInt, new ListBox()));
}

public static ListBox countDown(int integer, ListBox lb)
{
    ListItem li = new ListItem();

    if (integer > 0)
    {
        li.Text = integer.ToString();
        lb.Items.Add(li);

        integer--;
        countDown(integer, lb);
    }
    return lb;

}   
于 2013-04-20T22:35:30.323 回答