Rekurzivni algoritmi – primeri

Strana 3 od 5 · Primeri algoritama

Uvod u rekurzivne algoritme

Rekurzija je moćan koncept u programiranju koji omogućava funkcijama da se pozivaju same unutar svog tela. Ovaj pristup često se koristi za rešavanje problema koji mogu biti podeljeni na manje, slične podprobleme. Rekurzivni algoritmi su izuzetno korisni u mnogim oblastima, uključujući matematičke proračune, pretragu i sortiranje podataka, kao i za rešavanje kompleksnih problema koji imaju prirodne strukture stabala ili grafova.

Šta je Rekurzija?

Rekurzija se dešava kada funkcija poziva samu sebe kako bi rešila manji deo problema. Svaka rekurzivna funkcija mora imati osnovni slučaj koji zaustavlja dalje pozive, i rekurzivni slučaj koji razlaže problem na manje delove. Ključ uspešne primene rekurzije je dizajniranje funkcije na način da pravilno obrađuje osnovni slučaj i efikasno rešava rekurzivne slučajeve.

Prednosti Rekurzivnih Algoritama

  • Jednostavnost: Rekurzija može pojednostaviti kod za složene probleme koji bi u iterativnoj verziji bili teži za razumevanje i implementaciju.
  • Elegancija: Mnoge prirodne i matematičke strukture (kao što su stabla i grafovi) se prirodno predstavljaju rekurzivno.
  • Modularnost: Korišćenje rekurzije može pomoći u organizovanju koda na modularan i čitljiv način.

Praktična primena

Na ovoj stranici ćete pronaći zadatke koji koriste rekurziju za rešavanje različitih problema. Od jednostavnih zadataka kao što su izračunavanje stepena broja i sabiranje prirodnih brojeva, do složenijih izazova kao što su pronalaženje permutacija i rad sa matricama. Svaki zadatak je dizajniran da vam pomogne da poboljšate svoje veštine u programiranju koristeći rekurziju.
Pre nego što pristupite rešavanju zadataka, preporučujemo da proučite osnovne koncepte rekurzije kako biste bolje razumeli pristupe i tehnike koje će vam biti potrebne. Srećno sa rešavanjem! Pre nego što pristupite rešavanju zadataka, pročitajte lekciju na strani: Rekurzivni algoritmi

Pre nego što počneš: pročitaj lekciju Rekurzivni algoritmi.
Kako da vežbaš: prvo pokušaj sam/a da rešiš zadatak (makar na papiru), zatim otvori uputstvo, a rešenje tek na kraju. Rešenja su najčešće u jeziku C ili C++; ako učiš Javu ili Python, prepiši ideju u svoj jezik.
ZADATAK 01

Izračunavanje stepena xn

Napiši program koji pomoću rekurzije rešava stepena Xn

Ulaz:
Sa standardnog ulaza se unosi realan broj x (0.8 ≤ x ≤ 1.2) i ceo broj n (0 ≤ n ≤ 20).Izlaz:

Na standardni izlaz ispiši vrednost Xn zaokruženu na 5 decimala.

Primer:

Ulaz:
1.1
5

Izlaz:

1.61051
Rešenje: Zadatak je objašnjen detaljno na stranici: Rekurzivni algoritmi

ZADATAK 02

Prvi i drugi na rang listi

Na atletskom takmičenju učestvovalo je N učesnika . Na kraju takmičenja se sumiraju rezultati i formira se lista
u nerastućem poretku po broju osvojenih poena, od najviše do najmanje osvojenih poena. Napisati program
kojim se određuje broj poena takmičara koji su prvi i drugi na rang listi.Ulaz:

Prva linija standardnog ulaza sadrži prirodan broj N (1 ≤ N ≤ 20000) koji predstavlja broj takmičara. U svakoj od narednihN linija nalazi se ceo broj iz intervala [0, 20000], ti brojevi predstavljaju poene takmičara, koji nisu sortirani.

Izlaz:

U jednoj liniji standardnog izlaza prikazati broj poena prvog i drugog takmičara na rang listi.

Primer:

Ulaz:
5
70
95
75
30
99

Izlaz:

99
95
Pogledati sličan zadatak na sajtu petlja: petlja.org/biblioteka/r/Zbirka2/drugi_na_rang_listi

ZADATAK 03

Ispisivanje brojeva inverzno pa direktno

Napisati rekurzivnu funkciju koja ispisuje brojeve od 1 do n u inverznom pa u direktnom poretku.

ZADATAK 04

Sabiranje brojeva rekurzivno

Napraviti funkciju koja sabira prvih n prirodnih brojeva rekurzivno. U glavnoj metodi učitati n i pozvati rekurzivnu funkciju za izračunavanje zbira tih brojeva.

ZADATAK 05

Broj permutacija

Uneti ceo broj n, a zatim odrediti broj permutacija od n elemenata, koristeći rekurziju

ZADATAK 06

Fibonačijev niz

Uneti ceo broj n, a zatim ispisati Fibonačijev niz brojeva od n elemenata pomoću rekurzije. Odrediti takođe i zbir svih tih elemenata.

ZADATAK 07

Iz decimalnog u binaran oblik

Napisati rekurzivnu funkciju kojom se prirodni broj napisan u dekadnom obliku n ispisuje u binarnom obliku u direktnom poretku.
Primer 1:
Ulaz
22
Izlaz
0000 0000 0001 0110
Primer 2:
Ulaz
2147483647
Izlaz
1111 1111 1111 1111

ZADATAK 08

Broj kvadrata presečenih dijagonalom

Pravougaonik čije su širina i visina m[cm] i n[cm] redom sastavljen je od m*n kvadrata čije su stranice po 1cm. Napraviti program koji pomoću rekurzije određuje koliko će kvadrata biti presečeno sa glavnom dijagonalom tog pravougaonika.
Primer:
Ulaz
5
3
Izlaz
7Rekurzivne funkcije: Broj presečenih kvadrata dijagonalom pravougaonika koji ih sadržiFigure 1: Rekurzivne funkcije: Broj presečenih kvadrata dijagonalom pravougaonika koji ih sadrži

ZADATAK 09

Algoritam brzog stepenovanja

Napisati rekurzivnu funkciju za brzo stepenovanje XnUneti ceo broj n i iskoristiti funkciju za izračunavanje pomenutog stepena.

ZADATAK 10

Soliter

Soliter od n spratova treba da se kreči pod sledećim uslovima:

  • svaki sprat se kreči ili belo ili plavo
  • ne smeju biti 3 bela sprata jedan iznad drugog.

Na koliko se načina može okrečiti jedna n-to spratnica.

ZADATAK 11

Inverzna matrica

Učitati n, a zatim učitati matricu reda n*n. Napraviti program koji računa determinantu te matrice i njenu inverznu matricu.
Primer:
Ulaz

3
3 5 6
2 -6 3
0 1 7
Izlaz
-193

Rešenje:
Rad sa matricama je objašnjen detaljno na web strani: Dvodimenzioni dinamički nizovi-matrice
Izračunavanje determinante matrice je detaljno objašnjeno na web strani: Rekurzivni algoritmi

Još zadataka za vežbu