我想生成所有具有長度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