//这个是在上面看到一个说0-9的3个数加3个数和等一个4位数的题的文章,不记得谁的博客了啊,现在只是做了一部分。
我现在执行到return ValueInt;
他怎么还会回到GetIntValue(ValueInt);  再把这个执行一遍呢。我现在是要组合到9876543210然后返回,奇怪的是,到了这个数之后,他又会再招行一次GetIntValue(9876543200);  
所以结果就不准确了,高手帮忙看看要怎么修改?    ArrayList FristAL = new ArrayList();
    ArrayList MiddleAL = new ArrayList();
private Int64 GetIntValue(Int64 DefaultValue)//10个数字自由组合,递归调用
    {
        Int64 ValueInt = DefaultValue;
        ArrayList GetIntAL = MiddleAL;        
            for (int i = GetIntAL.Count - 1; i >= 0; i--)
            {
                if ((i == 9 || i == 6 || i == 3) && (int)GetIntAL[i] == 0)//首位不为0
                {
                    i--;
                }
                if (i > 0)
                {
                    ValueInt = ValueInt + ((int)GetIntAL[i])*((Int64)(Math.Pow(10, i)));
                    MiddleAL.Remove(MiddleAL[i]);                }
                    if (GetIntAL.Count > 0&&!(GetIntAL.Count==1&&(int)GetIntAL[0]==0))//还有未用到的数字,调用,最后一位如果是0跳出
                    {
                        GetIntValue(ValueInt);                        
                    }
                
            }
        
            return ValueInt;
    }