priama rekurzia

Autotest

  1. Priama rekurzia je, ak:
    • A volá A áno nie
    • A volá B a B volá A áno nie

  2. Rekurzívny podprogram, ktorý vypíše zadané číslo opačne je:
    procedure opacnecis(n:integer);
      begin
        write(n div 10);
        if n>9 then opacnecis(n div 10);
      end;
         
    procedure opacnecis(n:integer);
      begin
        if n>9 then opacnecis(n div 10);
        write(n mod 10);
      end;
         
    procedure opacnecis(n:integer);
      begin
        write(n div 10) ;
        if n>9 then opacnecis(n mod 10);
      end;
         
    procedure opacnecis(n:integer);
      begin
        write(n mod 10);
        if n>9 then opacnecis(n div 10);
      end;

  3. Aký je nerekurzívny prepis procedúry ULOHA
    procedure ULOHA(n:integer);
    begin
    if n>=17 then ULOHA(n-17)
    else if n=0 then writeln('je')
    else writeln('nie je');
    end;

    procedure uloha(n:integer);
      begin
        if n div 17= 0 then writeln('je')
        else writeln('nie je');
      end;
         
    procedure uloha(n:integer);
      begin
        if n mod 17= 0 then writeln('je')
        else writeln('nie je');
      end;
         
    procedure uloha(n:integer);
      begin
        writeln('nie je');
        if n mod 17= 0 then writeln('je')
      end;

  4. Vyberte správne príkazy namiesto písmen tak, aby procedúra vypisovala počet rôzných znakov v zadanom slove
    Procedure znak(s:string;n:integer;var m:mnozina);
    begin
    if length(s)>0 then
    begin
    if not(s[1] in m) then
    begin
    m:=m+[s[1]];
    A
    end
    else B
    end
    else
    if length(s)=0 then
    writeln('text ma', n,' roznych znakov');
    end;

    A:  
    znak(copy(s,2,length(s)-1),n);
    znak(copy(s,2,length(s)-1),n+1);
    znak(copy(s,2,length(s)-1),n-1);
       
    B:  
    znak(copy(s,2,length(s)-1),n);
    znak(copy(s,2,length(s)-1),n+1);
    znak(copy(s,2,length(s)-1),n-1);

  5. Doplňte podmienku ukončenia do procedúry tak, aby procedúra vypisova súčet zadaných čísel

    procedure sucet(a,b,integer);
    begin
    if . . . . . then sucet(a-1,b+1)
    else writeln('sucet cisel je ',b);
    end;

    a=b a<0
    a<=0 a>0
    a>=0 a<>b

  6. Rozhodnite, čo robí daná procedúra
    procedure ABC(a,stupen:integer);
    begin
    if stupen>0 then
    begin
    dopredu(a);
    vlavo(90);
    ABC(a+10,stupen-1);
    dopredu(a);
    vlavo(90);
    end
    else vpravo(90);
    end;

    špirála   dvojitá špirála
    dvojitá špirála   dvojitá špirála

  7. Doplnte príkazy tak, aby procedúra zistila minimim zo zadaných čísel.
    procedure minimum(počet,min:integer);
    var číslo:integer;
    begin
    A
    begin
    B
    C
    D
    end
    E
    end;

    A:   D:  
    if počet>=0 then else minimum(počet+1,min);
    if počet>1 then else minimum(počet-1,min);
    if počet>0 then else minimum(počet,min);
           
    B:   E:  
    write(číslo); else writeln('minimum zo zadanych čísel je ',min);
    readln(číslo); else writeln('minimum zo zadanych čísel je ',cislo);
    readln(číslo,i); else writeln('minimum zo zadanych čísel je ',i);
           
    C:      
    if číslo<=min then minimum(počet,číslo)
    if číslo<min then minimum(počet,číslo)
    if číslo<min then minimum(počet-1,číslo)