首先,我搜索了許多網站,并花了很多時間找到實作這一特定要求的方法。僅舉幾例,這和這來自 SO 以及來自外部站點的許多其他人。
這個要求很容易理解。
我無法使用import并且只能使用遞回來完成此任務。僅此功能必須能夠自行解決問題。不允許使用輔助函式。
我必須用這個定義寫一個函式:
def permutation(n: int) -> set[tuple[int]]:
呼叫時的預期結果permutation(3)如下:
{(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)}
我感到非常沮喪,以至于我無法在這里提供任何有用的嘗試。我試圖為此想出一個解決方案,但想不出任何有用的東西。因此,我沒有可以開始的示例代碼。
uj5u.com熱心網友回復:
這個想法是,如果您可以獲得 n - 1 的每個排列的串列,您可以n在這些排列結果中的每個點之間插入。
def permutation(n):
if n == 0:
# base case
return {()}
result = set()
for x in permutation(n - 1):
for i in range(n):
# insert n in position i in the permutation of all of the lesser numbers
result.add(x[:i] (n,) x[i:])
return result
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378865.html
上一篇:將實體傳遞給庫函式時出錯
下一篇:遞回函式中的計數器
