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
|