代码如下:
我要取得0到9 的可重复组合,利用下面的递归方法,可是当长度去4时就没有响应了,请问有什么其他好办法!        private static int si = 1;
private static int rsi = 1;
private static int icount = 1;
        private static int[] iarr;   private void btnStart_Click(object sender, System.EventArgs e)
        {
            if(this.txtStr.Text == "这里输入前缀")
            {
                MessageBox.Show("请输入前缀!","提示",System.Windows.Forms.MessageBoxButtons.YesNo );
            }
            else
            {
                si = int.Parse(cmbxSelect.Text);
rsi = si;
icount = 1;
            }
char[] cDri = new char[si];
            iarr = new int[rsi];
            for(int i =0;i < iarr.Length;++i)iarr[i] = 0;
            string strin = this.txtStr.Text;
Dirct(ref si,ref strin,txtOut,ref cDri);
        }
 public void Dirct(ref int si,ref string str, TextBox txtOut,ref char[] carr)
        {
if ( 0 == si)
{
string strOut = "" ;
for (int i = 0; i < carr.Length; i++)
{
strOut += carr[i];
}
txtOut.Text += str +strOut+ "\r\n";
                
return ;
}
si -= 1; for (int i = 0; i <10; i++)
{
carr[rsi - si  - icount] = (char)(48 + i);
++iarr[rsi - si  - icount ];
                if((rsi - si - icount) != (carr.Length - 1))
                {
                    if(iarr[rsi - si - icount] != 10 && iarr[rsi - si -icount ]  != 1 ) 
                    {
                        icount--;
                        si = 1;
                    }
                   
                }
                 Dirct(ref si,ref str,txtOut,ref carr);
                                           }
            ++icount; return;
         }