//这个是在上面看到一个说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;
}
我现在执行到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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货