Napíšte rekurzívnu procedúru, ktorá sčíta prirodzené čísla A  a  B bez použitia sčítania týchto dvoch čísel, aj bez použiťia tretej premennej. 
    Riešenie:     
      - Ak máme spočítať dve čísle a nemôžme použiť sčítanie, vieme jedno číslo rozpísať ako súčet jednotiek. Napríklad ak A=3 a B=5, tak A=3=1+1+1. Najprv musíme nájsť spôsob, ako spočítať tieto čísla. Jeden spôsob je, že od jedného čísla budeme po jednotkách odčítavať a k druhému pripočítavať tie jednotky (inak povedané, to čo z jednej strany zoberieme, dáme na druhú stranu). 
        
Príkazy by mali vyzerať takto: a=a-1 a b=b+1  
        Keďže tieto úpravy vieme robiť a v parametri procedúry tak môžme napísať takto:  
     
    
      
         | 
        procedure sucet (a,b:integer); | 
       
      
         | 
        begin  | 
       
      
         | 
          | 
        sucet(a-1,b+1);  | 
       
      
         | 
        end;  | 
       
     
     
       
      - Takáto procedúra sa bude vykonávať donekonečna, preto je potrebné doplniť podmienku ukončenia. Vieme, že ak sa z 
 jedného
 čísla odčítava, tak sa odpočítavať môže len po 0. Teda podmienka ukončenia bude ak a>0 tak odčítaj.
 
    Doplnené príkazy: 
     
    
      
        | procedure sucet (a,b:integer); | 
       
      
        | begin  | 
       
      
         | 
        if a>0 then  | 
       
      
         | 
          | 
        sucet(a-1,b+1);  | 
       
      
        | end;  | 
       
     
     
       
      - Máme napísanú aj podmienku ukončenia rekurzívneho vnárania. Ak a=0, tak v b bude hodnota a pripočítaná, v tom prípade je potrebné hodnotu b vypísať. Do procedúry je potrebné doplniť príkaz výpisu hodnoty b do vetvy else.
 
           
          
            
              | procedure sucet (a,b:integer); | 
             
            
              | begin  | 
             
            
               | 
              if a>0 then  | 
             
            
               | 
                | 
              sucet(a-1,b+1);  | 
             
            
               | 
              else writeln('sucet cisel je ',b);  | 
             
            
              | end;  | 
             
           
       
     
    Táto procedúra bude z prvého parametra odpočítavať jednotku a k druhému parametru tú jednotku pripočítavať. Toto sa bude vykonávať pokiaľ prvý parameter je väčší ako 0. Ak je jeho hodnota nulová, tak rovnaký počet jednotiek sa odpočíta z prvého parametra a taký istý počet jednotiek sa pripočíta k druhému parametru. Na záver v parametri b je súčet čísel a, b, ktoré sme na začiatku zadali.   |