[問題] 利用遞迴函式產生數列
最近小弟突發奇想一個問題,透過遞迴函數,
試著想把任一長度,用任意兩數之間所有的數
(含這任意兩數)。
產出所有的排列組合,以下為範例:
假設長度為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
09/13 16:34, 1F
討論串 (同標題文章)