作者drummerworld (Donkin??Donkey)
看板MATLAB
标题[问题] 利用递回函式产生数列
时间Fri Sep 13 16:09:51 2013
最近小弟突发奇想一个问题,透过递回函数,
试着想把任一长度,用任意两数之间所有的数
(含这任意两数)。
产出所有的排列组合,以下为范例:
假设长度为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
1F:推 sunev:T = a(start,end_num,space,[tmp i], T ,(round+1)); ? 09/13 16:34