我想生成所有具有长度n
和我的电话号码的每个数字具有与集{1,2,...,n-1}
的值,作为数组的可能数目。换句话说,我想列出长度为n
的所有基数n
,其中不包括0
。创建所有可能的阵列而不嵌套for循环
现在,我可以认为通过嵌套Ñfor
环路,以及分配myArray[i]
与第(i + 1)个循环来做到这一点是唯一的方法,也就是
int n;
int[] myArray = new int[n];
for (int i1 = 1; i1 < n; i1++)
myArray[0]=i1;
for (int i2 = 1; i2 < n; i2++)
myArray[1]=i2;
// and so on....
for (int in = 1; in < n; in++)
{
myArray[n]=in;
foreach (var item in myArray)
Console.Write(item.ToString());
Console.Write(Environment.NewLine);
}
,然后打印每个阵列在最内层的循环。显而易见的问题是,对于每个n,我需要手动编写n
for
循环。
从我读过的,递归似乎是取代嵌套for
循环的最好方法,但我似乎无法弄清楚如何制作递归的一般方法。
编辑
例如,如果n=3
,我想写出1 1 1
,1 1 2
,1 2 1
,1 2 2
,2 1 1
,2 1 2
,2 2 1
,2 2 2
。
我们不限于n<11
。例如,如果n=11
,我们将输出
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 1 1 3
...
1 1 1 1 1 1 1 1 1 1 10
1 1 1 1 1 1 1 1 1 2 1
1 1 1 1 1 1 1 1 1 2 2
1 1 1 1 1 1 1 1 1 2 3
...
1 1 1 1 1 1 1 1 1 9 10
1 1 1 1 1 1 1 1 1 10 1
1 1 1 1 1 1 1 1 1 10 2
1 1 1 1 1 1 1 1 1 10 3
...
10 10 10 10 10 10 10 10 10 9 10
10 10 10 10 10 10 10 10 10 10 1
10 10 10 10 10 10 10 10 10 10 2
...
10 10 10 10 10 10 10 10 10 10 10
因此,一个数的数字可以是介于并包括1
和10
任何值。数组myArray
只是用来获得这些数字之一,然后我们打印它,然后继续下一个数字并重复。
您在代码中有一个问题是,你使用'N'元素(用于存储你正在寻找所有可能的值,我假设)的阵列,但数量你需要找到价值要高得多(在'n的命令!'或'(N-1)*(N-1)',如果我理解你的问题) –
你能澄清你的问题一点?预期的投入和产出?你的代码根据你所说的问题可以想出任何我能想到的解释,但你所说的问题并不完全清楚。 –
我猜'n'最多可以是'10',否则我不确定*一个数字如何具有该集合的值。 – InBetween