[問題] 利用遞迴函式產生數列

看板MATLAB作者 (Donkin??Donkey)時間12年前 (2013/09/13 16:09), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
最近小弟突發奇想一個問題,透過遞迴函數, 試著想把任一長度,用任意兩數之間所有的數 (含這任意兩數)。 產出所有的排列組合,以下為範例: 假設長度為5,任意兩數為1和4。 產出的情況是: 1,1,1,1,1 1,1,1,1,2 1,1,1,1,3 1,1,1,1,4 1,1,1,2,1 . . 1,1,1,2,4 1,1,1,3,1 . . . 1,4,4,4,4 2,1,1,1,1 . . . 4,4,4,4,4 以下我所想的程式如下: function T = a(start,end_num,space,tmp,big_T,round) %start: 起始值 (如範例中的1) %end_num : 終止值(如範例中的4) %space : 陣列長度(如範例中的5) %tmp : 寫入暫時陣列。把目前一整列的執行結果寫入這暫時陣列(input為[]) %big_T : 一個大表格,每一行代表著暫時陣列。執行完結果回傳這整張表格(input為[]) %round : 回合數。用來判斷目前在該陣列的那一個段落(input為1) if( round <= space ) for i=start : end_num if ((round==1)&&(isempty(big_T))) T = a(start,end_num,space,[tmp i], big_T ,(round+1)); round = round -1 ; else T = a(start,end_num,space,[tmp i], T ,(round+1)); round = round-1; end end elseif (round==(space+1)) %終止條件 big_T = [big_T;tmp]; T = big_T; end 用意是希望最後把所有的情況塞在大表格中,並以這表格做為結果回傳。 不過以 T = a(1,3,4,[],[],1)做為測試,結果是 ??? Undefined function or variable "T". 因此想請問板上大大們可否麻煩指出小弟哪裡的邏輯有錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.18.147

09/13 16:34, , 1F
T = a(start,end_num,space,[tmp i], T ,(round+1)); ?
09/13 16:34, 1F
文章代碼(AID): #1ICiXIPG (MATLAB)
文章代碼(AID): #1ICiXIPG (MATLAB)