2013-10-15 17 views
-1

我的教授给我们的递归算法如下解释寻找一组数字的排列:怎么我的教授想出这个算法分析递归情况下?


enter image description here


当他(T(M + 1),N -1))这是从哪里来的?为什么是m + 1和n-1?我真的很困惑,如该从何而来。

+0

http://programmers.stackexchange.com/ –

+0

顺便说一句 - 告诉教授认为,该置换生成器是低效的。你可以'T(M,N)=新台币(M + 1,N - 1)'很容易(我有这种发电机的漂浮在这附近有一些变化)。 – Dukeling

回答

3

正如他所说的,m代表Pn当前大小代表S大小,每次递归调用你从S删除电话号码,并把它添加到P,这样你的当前排列的大小增加了1 (m+1)和可供选择的数字增加了置换的数量由1(n-1)下降

注意,它是由n如您在S执行此操作为每个数字乘以。

0

注意,指出部分:

mPn长度是S

大小,然后在printperm(P, S),你打电话printperm((P,i), S-{i})

因此,当递归时,我们将添加一个元素到P,并从S删除元素。

因此m将由一个和n增加将减少一个,因此我们得到T(m+1, n-1)

我希望帮助。

相关问题