作者wacheck (94不爱喝水)
看板Grad-ProbAsk
标题[理工] 资结 排列组合演算法的code疑问
时间Thu Jul 12 22:21:05 2018
https://i.imgur.com/gwmEd0q.jpg
请问一下各位
老师上课假设 list[1]=a, list[2]=b , list[3]=c
依据副程式perm是产生list[i]到list[n]的排列组合
今天我设i=n=2时,
以下是我的理解:
lis[1]跟list[2]作排列组合,也就是a和b作排列组合,会有ab、ba两种可能
但是根据code的意思,if条件成立时(i=n=2)
当j=1时 会印出list[1]的内容,也就是印出a
当j=2,印出list[2]的内容,也就是印出b
也就是指印出ab一种可能而已
不知道我的认知错在哪边 麻烦大家了 感恩
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.204.202
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1531405268.A.895.html
1F:→ wacheck: 忘记补充了,图中红线部分就是我的疑问QQ 07/12 22:22
2F:→ As77: 你的理解是错的 先确定知道recursion是什麽,终止条件为何是 07/12 22:33
3F:→ As77: i == n 07/12 22:34
4F:→ y2j60537: 不管call几次perm()参数n的值都是3 所以终止条件只会是 07/12 23:12
5F:→ y2j60537: i=n=3 第一次丢进去的n是多少整个recursion里面的n就是 07/12 23:12
6F:→ y2j60537: 多少 07/12 23:12
7F:→ wacheck: 递回的定义我了解 但想请问A大为何要i=n 被问倒了... 07/13 00:09
8F:→ wacheck: 第一次丢进去的n是多少整个recursion里面的n就是-->y大可 07/13 00:10
9F:→ wacheck: 以在说详细一些吗QQ 07/13 00:10
10F:→ y2j60537: perm(list,1,3)=把list的第一项到第三项做排列。使用递 07/13 01:22
11F:→ y2j60537: 回定义:排1~3=第一项固定+排2~3项。 那终止条件i=n就是 07/13 01:22
12F:→ y2j60537: 做到排第3到第3项时 代表已经排完了所以可以output结果 07/13 01:22
13F:→ y2j60537: 我觉得下面那个流程图再仔细想一下多带一些参数练习应 07/13 01:37
14F:→ y2j60537: 该可以解惑 做个perm(list,2,3),list=abc 注意一下call 07/13 01:37
15F:→ y2j60537: 到perm(list,i,n)时,那时的list是长什麽样子 07/13 01:37
16F:→ wacheck: 感谢解惑!!(跪) 07/13 08:09