Sunteți pe pagina 1din 2

PCLP.

Laborator 7
1. Prima evaluare la laborator
......................... .............

2. Recursivitatea şi preprocesarea

Aplicaţie rezolvată 1. Rulaţi cele două variante de mai jos, ale generării şirului Fibonacci, observând diferenţa
între timpii de execuţie de la cele două variante.

Prima este varianta cu o funcţie recursivă:


#include<stdio.h>

long fibonacci(int);

int main()
{
int n=47, i;

printf("Primii %d termeni ai sirului Fibonacci sunt: \n",n);


for ( i = 0 ; i < n ; i++ )
printf("%d\n", fibonacci(i));
return 0;
}

long fibonacci(int n)
{
if ( n == 0 )
return 0;
else if ( n == 1 )
return 1;
else
return ( fibonacci(n-1) + fibonacci(n-2) );
}
A doua este varianta iterativă:
#include<stdio.h>

int main()
{
int n=47, i;
long f1 = 0, f2 = 1, f3;

printf("Primii %d termeni ai sirului Fibonacci sunt: \n",n);


for ( i = 0 ; i < n ; i++ ){
if ( i <= 1 )
f3 = i;
else {
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
printf("%d\n",f3);
}
return 0;
}

1
Aplicaţie rezolvată 2. Definiţi un macro swap(t, x, y) care interschimbă două argumente de tipul de dată t.

#include <stdio.h>
#include <string.h>

#define swap(t, x, y) {t tmp; tmp = x; x = y; y = tmp;}

int main(void)
{
char cx = 'x', cy = 'R';
printf("inainte de interschimbare: %c, %c\n\n", cx, cy);
swap(char, cx, cy)
printf("dupa interschimbare : %c, %c\n\n\n", cx, cy);

int ix = 7, iy = 12;
printf("inainte de interschimbare: %d, %d\n\n", ix, iy);
swap(int, ix, iy)
printf("dupa interschimbare : %d, %d\n\n\n", ix, iy);

double dx = -9.731, dy = 0.257;


printf("inainte de interschimbare: %6g, %6g\n\n", dx, dy);
swap(double, dx, dy)
printf("dupa interschimbare : %6g, %6g\n\n\n", dx, dy);

return 0;
}

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