有一个String "123,456,789"
123表示百位,456表十位..
怎么用递归的算法求出:
 147
 148
 149
 157
 158
 159
....
这些所有的组合   谢谢

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,s1,s2,s3: string;
      sL: TStringList;
      i,j,k: byte;
    begin
      s:= '123,456,789';
      sL:= TStringList.Create;
      sL.Delimiter:= ',';
      sL.DelimitedText:= s;
      s1:= sL[0];
      s2:= sL[1];
      s3:= sL[2];
      for i:= 1 to length(s1) do
      for j:= 1 to length(s2) do
      for k:= 1 to length(s3) do
      begin
        memo1.Lines.Add(s1[i]+s2[j]+s3[k]);
      end;
      sl.Free;
    end;
      

  2.   

    这是用FOR 
    用递归怎么写
      

  3.   

    这样:
    用一个二维数组d[3][3]存储原有的数字,d[1][x]存储百位的,d[2][x]存储十位的,d[3][x]存储个位的。
    另造r[3]存储最终结果。
    递归的函数这样写(伪码)
    int f(int n)
    {
      if(n>3)
       输出后退出;  for i=1 to 3 do
    {
      r[n]=d[n][i];
      f(n+1);
    }
    }调用时用f(1)就可以了。
    函数f的参数表示放到第几个数了。从第1个开始,放好后再放第二个。
    不知符不符合要求。 ^^