Functii
1. Să se găsească valoarea termenului al n-lea din șirul lui Fibonacci.
F(0)=0; F(1)=1;F(n)=F(n-1)+F(n-2).
var n:byte;
function f(n:byte):longint;
begin
if(n=0) then f:=0
else if (n=1) then f:=1
else f:=f(n-1)+f(n-2);
end;
begin
write('n=');readln(n);
write('f(',n,')=',f(n));
end.
2. Să se afișeze suma primelor n numere naturale.
Se observă că pentru n=0 suma este 0 – condiția de oprire. Pentru oricare ar fi n număr natural suma primelor n elemente este suma primelor n-1 elemente la care se adaugă n. s(n)=s(n-1)+n.
var n:byte;
function s(n:byte):longint;
begin
if(n=0) then s:=0
else s:=s(n-1)+n;
end;
begin
write('n=');readln(n);
write('s(',n,')=',s(n));
end.
3. Să se afișeze produsul numerelor pare dintre 1 și n.
Pentru n=0 produsul este 1 (0!=1). Dacă n este număr par produsul se obține în funcție de produsul numerelor de la 1..n-1 la care se înmulțește n. Dacă numărul n este impar valoarea produsului nu se schimbă.
var n:byte;
function p(n:byte):longint;
begin
if(n=0) then p:=1
else if(n mod 2=0) then p:=p(n-1)*n
else p:=p(n-1);
end;
begin
write('n=');readln(n);
write('p(',n,')=',p(n));
end.
4. Care este al n-lea termen al șirului s(n)=0 dacă n=0; s(n)=(2n-1)+s(n-1) pentru n>0 ?
var n:byte;
function s(n:byte):longint;
begin
if(n=0) then s:=0
else s:=s(n-1)+2*n-1;
end;
begin
write('n=');readln(n);
write('s(',n,')=',s(n));
end.
5. Se citesc de la tastatură două numere a și n. Cât este valoarea lui a la puterea n?
var n,a:byte;
function p(a,n:byte):longint;
begin
if(n=0) then p:=1
else p:=p(a,n-1)*a;
end;
begin
write('n=');readln(n);
write('a=');readln(a);
write('p(',n,')=',p(a,n));
end.
6. Găsiți al n-lea termen al șirului definit în felul următor: a(0)=1, a(n+1)=1+a(n)*a(n) dacă n>=1.
var n:byte;
function a(n:byte):longint;
begin
if(n=0) then a:=1
else a:=a(n-1)*a(n-1)+1;
end;
begin
write('n=');readln(n);
write('a(',n,')=',a(n));
end.
7. Se citesc de la tastatură n numere. Să se afișeze suma numerelor strict positive.
var n:byte;
a:array[1..100]of integer;
function s(n:byte):longint;
begin
if(n=0) then s:=0
else if a[n]>0 then s:=s(n-1)+a[n]
else s:=s(n-1);
end;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);end;
end;
begin
citire;
write('s(',n,')=',s(n));
end.
8. Se citesc de la tastatură n numere. Să se afișeze numărul de numere pare din șir.
var n:byte;
a:array[1..100]of integer;
function s(n:byte):longint;
begin
if(n=0) then s:=0
else if a[n] mod 2=0 then s:=s(n-1)+1
else s:=s(n-1);
end;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);end;
end;
begin
citire;
write('s(',n,')=',s(n));
end.
9. Să se afișeze cmmdc(a,b). a și b se citesc de la tastatură.
var a,b:longint;
function cmmdc(a,b:longint):longint;
begin
if a=b then cmmdc:=a
else if a>b then cmmdc:=cmmdc(a-b,b)
else cmmdc:=cmmdc(a,b-a);
end;
begin
write('a=');readln(a);
write('b=');readln(b);
write('cmmdc=',cmmdc(a,b));
end.
10. Să se afișeze suma cifrelor dintr-un număr natural citit de la tastatură.
var n:longint;
function sumacifre(n:longint):byte;
begin
if n=0 then sumacifre:=0
else sumacifre:=sumacifre(n div 10)+n mod 10;
end;
begin
write('n=');readln(n);
write('suma cifre=',sumacifre(n));
end.
11. Să se afișeze numărul cifrelor impare dintr-un număr care se citește de la tastatură.
var n:longint;
function nrcifre(n:longint):byte;
begin
if n=0 then nrcifre:=0
else if (n mod 10) mod 2 =1 then nrcifre:=nrcifre(n div 10)+1
else nrcifre:=nrcifre(n div 10);
end;
begin
write('n=');readln(n);
write('numar cifre impare=',nrcifre(n));
end.
12. Să se afișeze cmmdc dintre n numere citite de la tastatură.
var n:byte;
a:array[1..100]of longint;
function cmmdc(a,b:longint):longint;
begin
if(a=b) then cmmdc:=a
else if a>b then cmmdc:=cmmdc(a-b,b)
else cmmdc:=cmmdc(a,b-a);
end;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);end;
end;
procedure cmmdc_n;
var i:byte; cm:longint;
begin
cm:=cmmdc(a[1],a[2]);
for i:=3 to n do cm:=cmmdc(a[i],cm);
write('cmmdc=',cm);
end;
begin
citire;
cmmdc_n;
end.