我尝试编写一个递归函数,返回某个深度的所有(1和0)组合(如果maxdepth为1,我想要(1)和(0),如果它是2)我想要(0,0),(0,1),(1,0)和(1,1)等,但我不断获得访问冲突(读取地址00000000)。这里是代码:< / p>
function binom(depth,maxdepth:integer):specarr;
var
i,j,k:integer;
a:specarr;
begin
setlength(result,0);
if depth<maxdepth then begin
a:=binom(depth+1,maxdepth);
for i:=0 to 1 do begin
for j:=0 to length(a)-1 do begin
setlength(result,length(result)+1);
setlength(result[length(result)-1],length(a[0])+1);
result[length(result)-1,0]:=i;
for k:=1 to length(a[0]) do begin
result[length(result)-1,k]:=a[j,k-1];
end;
end;
end;
end else begin
Setlength(result,2);
Setlength(result[0],1);
Setlength(result[1],1);
result[0,0]:=1;
result[0,1]:=0;
end;
end;
通过此代码调用:
var
ab:specarr;
begin
ab:=binom(1,1);
其中specarr定义为
type
specarr = array of array of integer;
提前抱歉这个杂乱的代码。
答案 0 :(得分:0)
问题出在你上次的任务中。它不应该是result[0,1]:=0;
而应该是:
result[1,0]:=0;