Delphi - 使用递归数组函数生成(1和0)组合的错误

时间:2014-10-27 22:28:50

标签: delphi recursion

我尝试编写一个递归函数,返回某个深度的所有(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;

提前抱歉这个杂乱的代码。

1 个答案:

答案 0 :(得分:0)

问题出在你上次的任务中。它不应该是result[0,1]:=0;而应该是:

result[1,0]:=0;