Sunteți pe pagina 1din 7

ANALIZA CORECTITUDINII.

EXEMPLE DE ALGORITMI

ALGORITMI RECURSIVI
1. Algoritm pentru adunarea a două valori
function plus(n, m)
if (n=0) return m
else return 1+plus(n-1, m)
endif
endfunction
2. Algoritm pentru determinarea lui 2n
function pow(n)
if (n=0) return 1
else return 2*pow(n-1)
endif
endfunction
3. Algoritm pentru determinarea termenului al n-lea din șirul Fibonacci
function fib(n)
if (n=0) return 0
if (n=1) return 1
else return fib(n-1) + fib(n-2)
endfunction
4. Algoritm pentru calcularea lui n!
function factorial(n)
if (n=1) then return 1
else return n*factorial(n-1)
endif
endfunction
5. Algoritm pentru calcularea sumei primelor n numere naturale
function suma(n)
if (n=1) then return 1
else return n+suma(n-1)
endif
endfunction
6. Algoritm care determina suma primelor n numere impare
function suma_impar(n)
if (n=1) then return 1
else return 2*n-1 + suma_impar(n-1)
endif
endfunction
7. Algoritm pentru însumarea valorilor dintr-un vector
function suma(v[1..n])
if (n=1) then return v[n]
else return v[n]+suma(v[1...n-1])
endif
endfunction
8. Algoritm pentru determinarea valorii maxime dintr-un vector
function max_vect(v[1..n])
if (n=1) then return v[n]
else return max(v[n], max_vect(v[1...n-1]))
endif
endfunction
9. Algoritm care determina suma pătratelor 1 + 22 + ... + n2
function suma2(n)
if (n=1) then return 1
else return n*n + suma2(n-1)
endif
endfunction
10. Algoritm care determină valoarea sumei 1*2 + … + (n-1)*n + n*(n+1)
function suma_consec(n)
if (n=0) then return 0
else return n*(n+1) + suma_consec(n-1)
endif
endfunction
11. Algoritm care calculeaza expresia np
function pow(n, p)
if (n=0) then return 1
else
if (n=1) then return n
else return n* pow(n, p-1)
endif
endif
endfunction
ALGORITMI NERECURSIVI
1. Algoritm pentru interschimbarea a două valori
x ¬ c, y ¬ 0
while (x > 0) do
x ¬ x-1
y ¬ y+1
endwhile
OUTPUT y
2. Algoritm pentru determinarea sumei puterilor lui 2
y ¬1
for i ¬1, n do
y ¬ y + 2^i
endfor
OUTPUT y
3. Algoritm care determina suma primelor n numere naturale
suma ¬ 0
i ¬ 0
while (i < n) do
i ¬ i+1
suma ¬ suma + i
endwhile
OUTPUT suma
4. Algoritm pentru însumarea cifrelor unui număr
suma ¬ 0
while (n>0) do
suma ¬ n%10 + suma
n ¬ n/10
endwhile
OUTPUT suma
5. Algoritm iterativ pentru calcularea lui n!
fact ¬ 1
i ¬ 2
while (i <= n) do
fact ¬ fact ´ i
i ¬ i +1
endwhile
OUTPUT fact
6. Algoritm care verifică dacă un număr este prim sau nu.
gasit ¬ 0
d ¬ 2
while (!gasit and d £ n/2) do
if (n%d==0)
gasit ¬ 1
else
d ¬ d+1
endif
endwhile
OUTPUT gasit
7. Algoritm pentru determinarea valorii minime dintr-un vector
minim ¬ v[1]
for i ¬ 2 to n do
if (v[i] < minim) then
minim ¬ v[i]
endif
endfor
OUTPUT minim
8. Algoritm pentru determinarea poziției unei valori într-un vector
j ¬ 1
while (v[j] ¹ elem) do
j ¬ j+1
endwhile
OUTPUT j
9. Algoritm pentru determinarea apartenenței unei valori la un vector
gasit ¬ 0
i ¬ 1
while(!gasit and i£n) do
if (v[i] = elem) then
gasit ¬ 1
else
i ¬ i+1
endif
endwhile
OUTPUT gasit
10. Algoritm pentru determinarea frecvenței unei valori într-un vector
freq ¬ 0
for i ¬ 1,n do
if (v[i] = elem) then
freq ¬ freq + 1
endif
endfor
OUTPUT freq
11. Algoritm care verifică dacă un vector are doar elemente distincte
i ¬ 1
gasit ¬ false
while (i<n) and (!gasit) do
j ¬ i+1
while (j<=n) and (!gasit)
if (v[i] = v[j]) then
gasit ¬ true
endif
j ¬ j+1
endwhile
i ¬ i+1
endwhile
OUTPUT gasit
12. Algoritmul pentru calcularea CMMDC(a,b) prin împărțiri repetate
r ¬ a % b
while (r)
a ¬ b
b ¬ r
r ¬ a % b
endwhile
OUTPUT b
13. Algoritmul de sortare prin interschimbare
for i¬1 to n-1 do
for j ¬ i+1 to n do
if (v[i]>v[j]) then
v[i]«v[j]
endif
endfor
endfor
14. Algoritmul de sortare bubble-sort
j ¬ 0
repeat
sortat ¬ false
j ¬ j+1
for i¬ 1, n-j do
if (x[i] > x[i+1]) then
x[i] « x[i+1]
sortat ¬ false
endif
endfor
until (sortat=true)
15. Algoritmul de sortare prin inserție
for j ¬ 2, n do
v[j] ¬ key
i¬ j-1
while (i>0 and v[i]>key)
v[i+1] ¬ v[i]
i¬ i-1
endwhile
v[i+1] ¬ key
endfor
16. Algoritmul de sortare prin selecție
for i ¬ 1, n-1 do
k ¬ i
min ¬ v[k]
for j ¬ i+1, n do
if (min > v[j]) then
k ¬ j
min ¬ v[j]
endif
endfor
if (k <> i) then
v[k] « v[i]
endif
endfor
17. Algoritm pentru determinarea celui de-al n-lea termen din șirul Fibonacci
a ¬ 0
b ¬ 1
for i ¬ 2, n
t ¬ a+b
a ¬ b
b ¬ t
endfor
OUTPUT b

S-ar putea să vă placă și