日期:2014-05-18  浏览次数:20850 次

初学递归。。。。
我想使用递归,调用随机函数生成一个指定的数字,观察这个随机函数的生成的过程
但是得到的结果是:
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
9,9,9,9,9,9,9,9,9,9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,6,6,6,
6,6,6,6,6,6,6,6,5,

难道生成一个 5 需要循环这么多次吗?还是写的代码有问题?

C# code

        private void Form1_Load(object sender, EventArgs e)
        {
            gg(10);
        }
        int gg(int i)
        {
            int i1 = new Random().Next(i);
            textBox1.Text += i1.ToString() + ",";

            if (i1 != 5)
            { i1 = gg(i); }
            return i1;
        }



------解决方案--------------------
不要在方法里头new Random
改成:
C# code
Random rnd=new Random();
        int gg(int i)
        {
            int i1 = rnd.Next(i);
            textBox1.Text += i1.ToString() + ",";

            if (i1 != 5)
            { i1 = gg(i); }//这就是递归,没错的。
            return i1;
        }