[理工] 資結 排列組合演算法的code疑問

看板Grad-ProbAsk作者 (94不愛喝水)時間7年前 (2018/07/12 22:21), 編輯推噓0(0016)
留言16則, 3人參與, 7年前最新討論串1/1
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://www.ptt.cc/bbs/Grad-ProbAsk/M.1531405268.A.895.html

07/12 22:22, 7年前 , 1F
忘記補充了,圖中紅線部分就是我的疑問QQ
07/12 22:22, 1F

07/12 22:33, 7年前 , 2F
你的理解是錯的 先確定知道recursion是什麼,終止條件為何是
07/12 22:33, 2F

07/12 22:34, 7年前 , 3F
i == n
07/12 22:34, 3F

07/12 23:12, 7年前 , 4F
不管call幾次perm()參數n的值都是3 所以終止條件只會是
07/12 23:12, 4F

07/12 23:12, 7年前 , 5F
i=n=3 第一次丟進去的n是多少整個recursion裡面的n就是
07/12 23:12, 5F

07/12 23:12, 7年前 , 6F
多少
07/12 23:12, 6F

07/13 00:09, 7年前 , 7F
遞迴的定義我了解 但想請問A大為何要i=n 被問倒了...
07/13 00:09, 7F

07/13 00:10, 7年前 , 8F
第一次丟進去的n是多少整個recursion裡面的n就是-->y大可
07/13 00:10, 8F

07/13 00:10, 7年前 , 9F
以在說詳細一些嗎QQ
07/13 00:10, 9F

07/13 01:22, 7年前 , 10F
perm(list,1,3)=把list的第一項到第三項做排列。使用遞
07/13 01:22, 10F

07/13 01:22, 7年前 , 11F
回定義:排1~3=第一項固定+排2~3項。 那終止條件i=n就是
07/13 01:22, 11F

07/13 01:22, 7年前 , 12F
做到排第3到第3項時 代表已經排完了所以可以output結果
07/13 01:22, 12F

07/13 01:37, 7年前 , 13F
我覺得下面那個流程圖再仔細想一下多帶一些參數練習應
07/13 01:37, 13F

07/13 01:37, 7年前 , 14F
該可以解惑 做個perm(list,2,3),list=abc 注意一下call
07/13 01:37, 14F

07/13 01:37, 7年前 , 15F
到perm(list,i,n)時,那時的list是長什麼樣子
07/13 01:37, 15F

07/13 08:09, 7年前 , 16F
感謝解惑!!(跪)
07/13 08:09, 16F
文章代碼(AID): #1RHsFKYL (Grad-ProbAsk)