這是一個遞歸問題,這真的讓我很困惑。生成所有可能的配對
我想爲一系列數字生成所有配對。它們不必全部存儲,只需至少生成一次。例如,對於0 1 2 3 4 5
這將是
(0 1) (2 3) (4 5)
(0 1) (2 4) (3 5)
(0 1) (2 5) (3 4)
(0 1) (3 4) (2 5)
(0 1) (3 5) (2 4)
(0 2) (1 3) (4 5)
(0 2) (1 4) (3 5)
etc.
正如你所看到的,我的方法是使用第一個可用的使用數量,以產生第一對(在開始的時候,這是0,用0-5),迭代通過所有剩餘的數字來創建第一對。然後,對於每一對我遞歸剩餘的數字。所以如果我的貨幣對是0 1
我會用2 3 4 5
重複這個過程。
我的問題是我無法弄清楚如何實現這個作爲遞歸函數。我發現它必須保留所有解決方案的運行列表(所以可以找到一些東西),同時還必須附加較小的解決方案並將它們結合起來。這對我來說太複雜了,因此我們將不勝感激。因此,任何關於方法或僞代碼的幫助(儘可能簡單)都是非常有用的。
我不確定遞歸函數是否是生成對的正確工具。如果你不僅需要生成對,而且還要生成'(0 2 4 5)'和'(1 3 4)'等等,你可以使用一個遞歸函數來接受兩個參數:當前排列和剩餘數字列表。 – Stijn 2014-10-27 08:46:47
您的規則不明確。首先,顯然'(0 1)(2 3)(4 5)'是有效的,但是'(0 1)(2 3)(5 4)'是無效的;正確?另外,從((0 1)(4 5)(2 3)''是唯一的'(0 1)(2 3)(4 5)';正確?什麼確定了有效的配對? – user2338816 2014-10-29 05:36:22
@ user2338816前兩個實際上是一樣的。我犯了一個錯誤,你提到的最後兩個也是一樣的。 – qwr 2014-10-29 22:16:03