Napíšte rekurzívnu funkciu na výpočet súčtu dvoch prirodzených čísel pomocou jednej premennej v parametri funkcie.
     Riešenie:  
     
       - Funkcia má počítať súčet čísel, to znamená, že jej návratový typ bude cele číslo.
 
         Názov funkcie bude sucet AB. 
         Parameter môže byť len jeden, 
 keďže
        počítame súčet prirodzených čísel, tak parameter bude cele číslo. 
        Zatiaľ bude funkcia vyzerať takto:  
         
        
          
            | function sucetAB(a:integer):integer;  | 
           
          
            | begin  | 
           
          
            |   | 
            ... | 
           
          
            | end;  | 
           
         
         
        
	   - Keby sme mali dve premenné, tak súčet nie je problém vypočítať. My máme k dispozícií len jednu premennú a tá je ako parameter funkcie. Keďže každým zavolaním funkcie sa vytvoria v pamäti jej lokálne premenné (aj premenné v parametri), tak ich môžme počas vykonávania funkcie zmeniť. Túto vlastnosť využijeme neskôr.
 
	      
        Súčet budeme robiť tak, že funkcií priradíme súčet 1 a funkcie s parametrom o 1 znížením. Teda: 
         
        
          
            | function sucetAB(a:integer):integer;  | 
           
          
            | begin  | 
           
          
            |   | 
             sucetAB:=1+sucetAB(a-1)  | 
           
          
            | end;  | 
           
         
	     
	    
	   
       - Otázka je: do kedy môžme znižovať premennú a takto sa rekurzívne vnárať? Odpoveď je jednoduchá, dovtedy pokiaľ a>0. Pretože my sa a-krát vnoríme, na rekurzívnom dne musíme funkcií priradiť nejakú konštantnú 
 hodnotu
 a pri vynáraní tejto hodnote budeme a-krát pripočítavať 1. 
 
         Na základe tejto úvahy môžme do funkcie doplniť 
 podmienku
 ukončenia rekurzívneho vnárania. 
          
         
           
             | function sucetAB(a:integer):integer;  | 
            
           
             | begin  | 
            
           
             |   | 
             if a>0 then sucetAB:=1+sucetAB(a-1)  | 
            
           
             | end;  | 
            
          
          
        
       - Teraz ideme rozhodnúť, aké bude priradenie na rekurzívnom dne. Vieme, že môžme zmeniť 
 hodnotu
 parametra funkcie (
 keďže
 túto hodnotu nepotrebujeme, lebo ju nikde nevyužívame iba v podmienke. Keď
 prejdeme cez podmienku tak môžme premennú zmeniť). Využijeme premennú, ktorú máme a ak a=0, tak do tej premennej načítame hodnotu druhého čísla. A potom túto premennú priradíme funkcií.
  
         Po doplnení príkazov dostávame: 
          
         
           
             | function sucetAB(a:integer):integer;  | 
            
           
             | begin  | 
            
           
             |   | 
             if a>0 then sucetAB:=1+sucetAB(a-1)  | 
            
           
             |   | 
             else  | 
             begin  | 
            
           
             |   | 
               | 
               | 
             readln(a);  | 
            
           
             |   | 
               | 
               | 
             sucetAB:=a;  | 
            
           
             |   | 
               | 
             end;  | 
            
           
             | end;  | 
            
          
      
        
          
	  volanie procedúry: sucetAB(10);        |