我试图写一个函数,将作为输入长度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