recursivitate-exemple

// #include // // #include //
 * ** 1. cmmdc(a,b) **

//** int cmmdc(int a,int b) **// // { // // if( a==b) return a; // // else // // if (a>b) **__return cmmdc(a-b,b);__** // //**__ else return cmmdc(a,b-a); __**// // } // // int main // // { int a=18,b=6; // // clrscr; // // cout<
 * 2) include

{ if (n<2) return 0; else {if(n==2) return 1; else if (d>=sqrt(n)) return 1; else if(n%d==0) return 0; else **__return prim(n,d+1__);** } }
 * int prim(int n,int d) **

int main { int n=1,d=2; clrscr; if( prim(n,d)) cout<<"da"; else cout<<"nu"; return 0;

} || ** Descompunerea in factori primi ** void descompfp(int n, int fact, int p) descompunere in factori primi { if(n>1) { if (n%fact==0){++p; descompfp(n/fact,fact,p);} else { if(p!=0) {cout<<"fact="<>x;** **__return suma(n-1)+x;__** } } int main { int n=3; clrscr; cout<
 * 2) include
 * int f(long n) **
 * 1) include
 * 2) include
 * long suma(int n) **
 * ** suma elementelor unui vector **
 * 1) include
 * 2) include
 * 1) include

**long suma(int n,int x[])** { if (n==0) return 0; else { return **__suma(n-1,x)+x[n];__** } } int main { int i,n,x[10]; clrscr; cin>>n; for(i=1;i<=n;i++) cin>>x[i]; cout<
 * 2) include

**void suma(int n,int x[], long &s)** { if (n==0) s=0; else { **__suma(n-1,x,s);__** s=s+x[n]; } } int main { int i,n,x[10];long s; clrscr; cin>>n; for(i=1;i<=n;i++) cin>>x[i]; **suma(n,x,s);** cout<**Sa se construiasca un vector cu suma elementelor de pe fiecare linie dintr-o matrice**. #include

<span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">using namespace std; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">fstream f("mat.in",ios::in); <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">fstream g("mat.out",ios::out); <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">{ int i,j; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> for(i=1;i<=n;i++) <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> for(j=1;j<=n;j++) <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> f>>a[i][j];
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">int a[10][10],v[10],n; **
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">void citire(int a[][10],int n) **

<span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">} <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">{ int j; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> if(i<=n) { v[i]=0; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> for(j=1;j<=n;j++) v[i]+=a[i][j]; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> suma(a,n,i+1,v); <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> } <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">} <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">{ <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> if(i<=n) <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> { g<<v[i]<<" "; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> afisare(v,i+1); <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> } <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">} <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">int main <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">{ <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> f>>n; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> **citire(a,n);** <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> f.close; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> g.close; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> return 0; <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">} || ** Fibonacci **
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">void suma(int a[][10],int n,int i, int v[]) **
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;">void afisare(int v[],int i) **
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> suma(a,n,1, v); **
 * <span style="font-family: 'Cambria','serif'; font-size: 13.3333px;"> afisare(v,1); **

{ if(n<=2) return n; else r**eturn fibo(n-1)+fibo(n-2)**; } Urmariti ce se intimpla la apelarea functiei fibo(7) in imaginea de mai jos. Se apeleaza functia de mai multe ori pentru aceeasi valoare, n?
 * long fibo**(int n)
 * Observatie**: se recomanda utilizarea unui algoritm iterativ.

{ int j,**s=0;** if(i<=n) { **__for(j=1;j<=n;j++)__//** if (a[i][j]%2==0) s=s+a[i][j]; return s+calcul(i+1); } else return 0; }
 * Alte exemple**
 * Suma elementelor pare din matrice**
 * __int calcul(int i)__**

{ if(i<=n) { if(j<=n) {if(a[i][j]%2==0) return a[i][j]+calcul2(i,j+1); else return calcul2(i,j+1);
 * __int calcul2(int i, int j)__**

} else return calcul2(i+1,1); } else return 0; } ||