我試圖寫一個函數,將作爲輸入長度L
和距離D
(均爲整數>1
)和輸出適合以下參數的所有可能的序列:生成序列
- 開始用數字
1
- 具有
L
元件 - 必須每個元素和以下元件之間的
D
一個1
距離
所以,L = 4
和D = 2
,可能的順序將是:
1 2 3 4 (distance of 1 between each consecutive element)
1 2 3 5
1 2 4 5
1 2 4 6
1 3 4 5
1 3 4 6
1 3 5 6
1 3 5 7 (distance of 2 between each consecutive element)
或者,L = 3
和D = 3
,可能的順序將是:
1 2 3 (distance of 1 between each consecutive element)
1 2 4
1 2 5
1 3 4
1 3 5 (distance of 2 between each consecutive element)
1 3 6
1 4 5
1 4 6
1 4 7 (distance of 3 between each consecutive element)
從手工編碼其中幾個,可能的序列數似乎是D ** (L-1)
。起初我只需要2\**7
,128個序列不是很難手工創建。不過,我現在需要3**7
,甚至可能更大,所以我需要編寫一個函數。
Python是我正在學習的語言。遞歸似乎是做到這一點的方式,但我只練習簡單的遞歸,而且我堅持寫下這個如何精確。盡我所能,我需要一個從for循環中調用自己的函數。這有意義嗎?同樣的結構化功能的方向也將不勝感激。
您是否想爲第一個例子生成像1 2 4 2這樣的數字?或者你想讓它不斷增加? –
你想'itertools.product(range(1,D + 1),repeat = L-1)' – Gribouillis