作者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/m.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