Uvod u programiranje matematika IX predavanje Rekurzija Vesna

  • Slides: 12
Download presentation
Uvod u programiranje - matematika – IX predavanje Rekurzija Vesna Veličković vesna@pmf. ni. ac.

Uvod u programiranje - matematika – IX predavanje Rekurzija Vesna Veličković vesna@pmf. ni. ac. rs

Potprogrami Potprogram opisuje neki postupak i daje mu ime. Potprogrami u Pascalu su •

Potprogrami Potprogram opisuje neki postupak i daje mu ime. Potprogrami u Pascalu su • procedure, • funkcije. Potprogrami služe da se jedan deo programa izdvoji u zasebnu celinu koja se zatim može jednom ili više puta koristiti. Upotreba potprograma olakšava pisanje programa i mnogo povećava njegovu čitljivost.

Ne-rekurzivna definicija n ! = n * (n-1) *. . . * 2 *

Ne-rekurzivna definicija n ! = n * (n-1) *. . . * 2 * 1 0! = 1 function faktorijel_N (n: Long. Int) : Long. Int; var i : integer; P : Long. Int; begin P : = 1; for i: =2 to n do P : = P * i; faktorijel_N : = P; end;

Rekurzivna definicija 0! = 1 n ! = n * (n-1) ! function faktorijel_R

Rekurzivna definicija 0! = 1 n ! = n * (n-1) ! function faktorijel_R (n: Long. Int) : Long. Int; begin if n = 0 then faktorijel_R : = 1 else faktorijel_R : = n * faktorijel_R (n-1) end;

Stepen a 0 = 1 an = a * an-1 a-n = 1 /

Stepen a 0 = 1 an = a * an-1 a-n = 1 / an , n > 0 function stepen (a: real; n: integer) : real; begin if n = 0 then stepen : = 1 else if n > 0 then stepen : = a * stepen (a, n-1) else stepen : = 1 / stepen (a, -n) end;

Optimizacija a 2 n = (a 2)n function stepen (a: real; n: integer) :

Optimizacija a 2 n = (a 2)n function stepen (a: real; n: integer) : real; begin if n = 0 then stepen : = 1 else if n < 0 then stepen : = 1 / stepen (a, -n) else if n mod 2 = 0 then stepen : = stepen (sqr(a), n div 2) else stepen : = a * stepen (a, n-1) end;

Fibonačijev niz • F (1) = 1 • F (2) = 1 • F

Fibonačijev niz • F (1) = 1 • F (2) = 1 • F (n) = F(n-1) + F(n-2), n=3, 4. . . function Fibonaci (n: integer) : integer; begin if (n = 1) or (n = 2) then Fibonaci : = 1 else Fibonaci : = Fibonaci (n-1) + Fibonaci (n-2) end;

VAŽNO • Rekurzivni potprogram mora da ima bar jednu nerekurzivnu granu i ona se,

VAŽNO • Rekurzivni potprogram mora da ima bar jednu nerekurzivnu granu i ona se, za svaku dopustivu vrednost parametra, mora nekad pozvati. • Prednost rekurzije je što se lako piše i lako razume. • Nedostatak rekurzije je što se sporo izvršava i što troši dosta memorijskog prostora.

 • Napisati potprogram koji štampa cifre prirodnog broja n od cifre najmanje težine

• Napisati potprogram koji štampa cifre prirodnog broja n od cifre najmanje težine do cifre najveće težine. procedure obradi (n: integer); var cifra : 0. . 9; begin if n div 10 = 0 {jednocifren broj} then <stampaj n> else begin cifra : = n mod 10; <stampaj cifra> ; obradi (n div 10) ; end;

 • Napisati potprogram koji štampa cifre prirodnog broja n od cifre najveće težine

• Napisati potprogram koji štampa cifre prirodnog broja n od cifre najveće težine do cifre najmanje težine. procedure obradi (n: integer); var cifra : 0. . 9; begin if n div 10 = 0 {jednocifren broj} then <stampaj n> else begin cifra : = n mod 10; obradi (n div 10); <stampaj cifra>; end;

Hanojske kule procedure prebaci (n: integer; pocetna, pomocna, krajnja : 1. . 3); begin

Hanojske kule procedure prebaci (n: integer; pocetna, pomocna, krajnja : 1. . 3); begin if n <> 0 then begin prebaci (n-1, pocetna, krajnja, pomocna); (pocetna, '->', krajnja); prebaci (n-1, pomocna, pocetna, krajnja); end;

Hanojske kule https: //www. youtube. com/watch? v=z 417 z. QKm. KIQ

Hanojske kule https: //www. youtube. com/watch? v=z 417 z. QKm. KIQ