gpt4 book ai didi

c# - 在没有嵌套 for 循环的情况下创建所有可能的数组

转载 作者:行者123 更新时间:2023-11-30 21:43:30 25 4
gpt4 key购买 nike

<分区>

我想生成所有可能的长度为 n 的数字,我的数字的每个数字都有一个来自集合 {1,2,...,n-1} 的值,作为一个数组。换句话说,我想列出所有长度为 n 且不包括 n 的基数 0

现在,我能想到的唯一方法是嵌套 n 个 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 11 1 21 2 11 2 22 1 12 1 22 2 1 , {1045.67915}

我们不限于 2 2 2 。例如,如果 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

因此,数字的数字可以是介于 n=111 之间并包括在内的任何值。数组 10 只是用来获取其中一个数字,然后我们打印它,然后继续下一个数字并重复。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com