我想使用递归,调用随机函数生成一个指定的数字,观察这个随机函数的生成的过程
但是得到的结果是:
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 需要循环这么多次吗?还是写的代码有问题?
        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;
        }

解决方案 »

  1.   

    要有个计数器而不是i1判断。或者
    string[] s = textBox1.Text.Split(',');
    if(s.Length != 4)  // 有4个,号
    {
        i1 = gg(i);
    }
      

  2.   


    我是想知道生成 5 实际循环的次数(及每次生成的数字)
    判断 s.Length 只是限定了生成的个数,大多数时候并不能得到 5
    麻烦能不能完成的写一下代码,马上结贴!!
      

  3.   

    参考
    http://www.cnblogs.com/hangxin1940/archive/2008/04/17/1158664.html
      

  4.   

    不要在方法里头new Random
    改成:
    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;
            }