Programski jezik C
Funkcije - Rekurzija /FUNCTIONS - RECURSION/
Opis principa rada rekurzije /RECURSION - EXPLANATION

 

Napisati program sa rekurzijom za računanje sume prvih n brojeva.

Opis programa: Naredba return n + suma(n - 1); obebjeđuje izračunavanje kumulativne sume i ponovno pozivanje funkcije.

n Naredba za rekurziju
return n + suma(n -1);
Vrijednost po završetku narebe
3 return 3 + suma(3-1) = 3
2 return 2 + suma(2 -1); = 3 + 2
1 return 1 = 3 + 2 + 1
SSSSSS
return n po završetku poziva (n-1) po završetku poziva (n-2) zajedno
n      
3 + suma(n-1)    
  + suma(3-1)    
  + 2 + suma(n-2) n+suma(n-1)+suma(n-2)
    + suma(3-2) 3+suma(3-1)+suma(3-2)
3 + 2 + 1 = 3 + 2 + 1= 6

 

Listing programa:

// RECURSCION EXPLANATION 09411015
#include <stdio.h>
int suma(int n);

int main ()
{
    printf("Suma prvih n brojeva . Rekurzija\n");
    int broj, s;

    printf("Broj: ");      // ulazne vrijednosti
    scanf("%d",&broj);

    s = suma(broj);        // poziv funkcije suma

    printf("Suma brojeva od 1 do %d je %d", broj, s);     // ispis vrijednosti ulznih i izlaznih varijabli

    return 0;
}

int suma(int n) {

    if(n == 1) { // ponavljanje do granicne vrijednosti ulazne varijable?
      return 1;  // kraj rekurzije
   }

	// Izračunavanje povratne varijable funkcije sadrži i poziv iste funkcije
	// i promjenom donje granice suma(k + 1, n) obezbjeđjuje umanjenje vrijednosti varijable n - brojača
    return n + suma(n - 1);    // izracunavanje izlazna vrijednost funkcije
}


Ispis na ekranu:
Suma prvih n brojeva . Rekurzija
Broj: 3
Suma brojeva od 1 do 3 je 6

Index