我的教授如何在算法分析中提出递归案例?

时间:2013-10-15 15:02:00

标签: algorithm recursion proof

我的教授给出了以下关于找到一组数字的排列的递归算法的解释:


enter image description here


当他有(T(m + 1),n-1))它来自哪里?为什么是m + 1和n-1?我真的很困惑它来自哪里。

2 个答案:

答案 0 :(得分:3)

正如他所说,m表示P的当前大小,n表示S的大小,在每次递归调用中,您从{{1}中删除一个数字并将其添加到S,因此当前排列的大小增加1(P),并且要添加到排列的可用数字的数量减少1({{1} })

请注意,当您对m+1中的每个号码执行此操作时,它会乘以n-1

答案 1 :(得分:0)

请注意:

部分
  

mP的长度,n的大小为S

然后在printperm(P, S),您正在呼叫printperm((P,i), S-{i})

因此,在递归时,我们会向P添加一个元素,并从S中删除元素。

因此m会增加1,而n会减1,因此我们会T(m+1, n-1)

我希望有所帮助。