rekurzívne funkcie

Autotest

  1. Rozhodnite, ktorá funkcia počíta ciferny súčin zadaného čísla.

    function cifsucin(n:longint):integer;

      begin
       

    if n>10 thencifsucin:=(n mod 10)*cifsucin (n div 10);

       

    else cifsucin:=n;

      end;
         
    function cifsucin(n:longint):integer;
      begin
        if n>=10 thencifsucin:=(n div 10)*cifsucin (n mod 10);
        else cifsucin:=n;
      end;
         
    function cifsucin(n:longint):integer;
      begin
        if n>=10 thencifsucin:=(n mod 10)*cifsucin (n div 10);
        else cifsucin:=n;
      end;

  2. Doplňte príkazy namiesto znakov tak, aby funkcia počítala súčin prirodzených čísel A a B pomocou sčítania
    function sucinAB( A ): B;
    begin
      if C then sucinAB:=b D sucinAB(a-1,b)
      else sucinAB:=b;
    end;

    A: a,b:integer;   B: string
      a,b:real;     integer
      a,b:char     real
                 
    C: a>0   D: *
      a>1     -
      a>2     +

  3. Rozhodnite, aký je nerekurzívny prepis danej funkcie
    function nsd(a,b:integer):integer;
    begin
      if a>b then nsd:=nsd(a-b,b)
      else if b>a then nsd:= nsd(a,b-a)
      else nsd:=a;
    end;

    function nsd(a,b:integer):integer;   function nsd(a,b:integer):integer;
      begin     begin
        while a<=b do       while a<>b do
        Begin       Begin
          if a<b then a:=a-b         if a<b then a:=a-b
          else if b>a then b:=b-a         else if b>a then b:=b-a
        end       end
        nsd:=a       nsd:=a
      end;     end;
                     
    function nsd(a,b:integer):integer;   function nsd(a,b:integer):integer;
      begin     begin
        while a<>b do       while a<>b do
        Begin       Begin
          if a>b then a:=b-a         if a<b then a:=a-b
          else if b>a then b:=a -b         else if b>a then b:=b-a
        end       end
        nsd:=a       nsd:=a
      end;     end;

  4. Rozhodnite, aký je výstup pri vstupe a=6, b=10 použitím danej funkcie

    function ABC(a,b:integer):integer;
    begin
      if b>0 then ABC:=ABC(a-1,b-1)
      else ABC:=a;
    end;


    4
    5
    6
    -4
    0