C# 迭代数组中的值

C# 迭代数组中的值,c#,arrays,C#,Arrays,如果我有一个可变长度[n]的整数数组,那么可以迭代它,使每个值仅在下一个值达到n-1时递增 例如,如果n=3: int[] intArray = {0, 0, 0}; 阵列[]中的增量,以便: intArray = {0, 0, 1} intArray = {0, 0, 2} intArray = {0, 1, 0} intArray = {0, 1, 1} intArray = {0, 1, 2} intArray = {0, 2, 0} intArray = {0, 2, 1} intAr

如果我有一个可变长度[n]的整数数组,那么可以迭代它,使每个值仅在下一个值达到n-1时递增

例如,如果n=3:

int[] intArray = {0, 0, 0};
阵列[]中的增量,以便:

intArray = {0, 0, 1}
intArray = {0, 0, 2}
intArray = {0, 1, 0}
intArray = {0, 1, 1}
intArray = {0, 1, 2}
intArray = {0, 2, 0}
intArray = {0, 2, 1}
intArray = {0, 2, 2}
intArray = {1, 0, 0}
intArray = {1, 0, 1}
...
intArray = {2, 2, 2}

它有助于思考问题中的模式——有时它们会提出一些简单的解决方案

在本例中,数组内容的作用类似于base-n数字(在特定示例中为base-3)。所以你可以考虑一个算法来增加一个任意的数字基数,一旦你有了它的编码。 一个将“递增”一个base-n数的函数将首先递增最低有效位并检查它是否溢出。在10进制中,我们将保留0,并将1带到下一个最高有效位。在任意数字基中,这与将数字重置为零并递增下一个最高有效数字相同

有特殊的情况需要考虑。如果要求您增加数字基中的“maxint”,例如
{2,2,2}
,该怎么办?请再加一个有效数字好吗?您是将该值固定在“maxint”处,还是将其换行到
0
?你会抛出一个异常吗?没有“正确”的答案,除非您已经有了规范

在伪代码中,以下是想法:

increment( digits  , base ) {
 for (place=digits.length - 1; place >= 0; place-- ) {
   digit = digits[place]++;  // increment digit in this place
   if (digit < base)
    break;
   else
    digit = 0; // overflowed, so "wrap" to zero, increment next place
 }
 return digits;
}
增量(位数、基数){
对于(place=digits.length-1;place>=0;place--){
数字=数字[位置]++;//此位置的增量数字
if(位数<基数)
打破
其他的
digit=0;//溢出,所以“wrap”为零,增加下一个位置
}
返回数字;
}

只要稍加修改,就可以完美地工作,任何人都可以使用该模块。