Construii o funcie recursiv care calculeaz aranjamente de n luate cate
unde n si k citite de la tastatura. #include<stdio.h> int aranjamente(int n,int k); int main(void) { int n,k; printf("Se vor calcula Aranajamente de n luate cate k.\n"); printf("n=");scanf("%d",&n); printf("k=");scanf("%d",&k); if(!((1<=k)&&(k<=n))) { printf("Pentru datele introduse, nu se poate calcula fact orialul."); return 1; } printf("Aranjamente de %d luate cate %d=%d",n,k,aranjamente(n,k)); } int aranjamente(int n,int k) { if(k==1) return n; else return n*aranjamente(n-1,k-1); } //2. Calcului combinari de n luate cate k printr-o functie recursiva #include<stdio.h> float combinari(int n,int k); int main(void) { int n,k; printf("Se vor calcula Combinari de n luate cate k.\n"); printf("n=");scanf("%d",&n); printf("k=");scanf("%d",&k); if(!((1<=k)&&(k<=n))) { printf("Pentru datele introduse, nu se pot calcula combin arile."); return 1; } printf("Aranjamente de %d luate cate %d=%d",n,k,(int)combinari(n,k) ); } float combinari(int n,int k) { if((n==0)||(k==0)||(n==k)) return 1; else return (float)n/(n-k)*combinari(n-1,k); } //3.Calculul celui mai mare divizor comun a dou numere folosind o funcie recursiv. #include<stdio.h> int cmmdc(int a,int b); int main(void) { int a,b; printf("Introduceti mai jos 2 numere. a si b.\n"); printf("a=");scanf("%d",&a); printf("b=");scanf("%d",&b); if(!((a>=0)||b>=0)) { printf("Nu se poate calcula CMMDC pentru cele 2 numere." ); return 1; } printf("CMMDC al celor 2 numere este:%d.\n",cmmdc(a,b)); return 0; } 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); } } //4.Se consider recursivitatea: //an=(an-1+bn-1)/2 i //bn=sqrt(an-1*bn-1+2), determinai an i bn, pentru n, a0, b0 introduse de la tastatur. #include<stdio.h> #include<math.h> double an(int n); double bn(int n); int a0,b0; int main(void) { int n; printf("Introduceti numerele:\n"); printf("n=");scanf("%d",&n); printf("A0=");scanf("%d",&a0); printf("B0=");scanf("%d",&b0); printf("A%d=%f iar B%d=%f",n,an(n),n,bn(n)); return 0; } double an(int n) { if(n==0)return (double)a0; else return (an(n-1)+bn(n-1))/2; } double bn(int n) { if(n==0) return (double)b0; else return sqrt(an(n-1)*bn(n-1)+2); } //6.Determinai printr-o funcie recursiv produsul scalar a doi vectori. #include<stdio.h> int produs(int *a,int *b,int n); int main(void) { int *a,*b,n; printf("Introduceti dimensiunea vectorilor:");scanf("%d",&n); a=new int[n]; b=new int[n]; for(int i=0;i<n;i++) { printf("a[%d]=",i);scanf("%d",&a[i]); } for(int i=0;i<n;i++) { printf("b[%d]=",i);scanf("%d",&b[i]); } printf("Produsul scalar a celor 2 vectori este:%d",produs(a,b,n)); } int produs(int *a,int *b,int n) { if(n==0) return 0; else return (a[n-1]*b[n-1]+produs(a,b,n-1)); }