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. 

counter for wordpress

View My Stats