Algoritmi Recursivi
Algoritmi Recursivi
Prim: Int prim (int n, int I {if (i==1) return 1; Else return (n%i!=0) && prim (n,i-1);}
Inversul unui nr: Void inv (unsigned long n, unsigned long nr) {if (n<10) return nr+n; Else return inv(n/10, 10*(nr+n%10));}
Descompunerea in factori primi: Void factor (int n, int f, int p) {if (n>1) If (n%f==0) factor (n/f, f, p+1; Else {if (p!=0) cout<<f<<la puterea<<p<<endl; Factor (n, f+1, 0);} Else if (p!=0) cout<<f<<la puterea<<p;}
Eliminarea cifrelor pare long sterge(long n) { if(n==0) return 0; else if(n%2==1) return sterge(n/10)*10+n%10; else return sterge(n/10); } numar divizori
#include<iostream.h> int nrdivizori(int n, int d){ if(d==n) return 0; else if(n%d==0) return 1+nrdivizori(n, d+1); else return nrdivizori(n, d+1); } int main(){ int x, d1=1; cin>>x; cout<<nrdivizori(x,d1); }
nr de aparitii a unei cifre intr-un nr #include<iostream.h> int nraparitii(int n, int c){ if(n==0) return 0; else if(n%10==c) return 1+nraparitii(n/10,c) else return nraparitii(n/10,c); } int main() {int n,c; cin>>n; cin>>c; cout<<nrapartii(n,c); }
ordonare vector #include <iostream.h> int n,x[100]; void ordo (int i,int j,int n){ int aux; if (i<=n-1) if (j<=n) { if (x[i]>x[j]){ aux=x[i];
x[i]=x[j]; x[j]=aux; ordo(i,j+1,n); else ordo(i+1,i+2,n); } int main(){ int i; cin>>n; for(i=1;i<=n;i++) cin>>x[i]; ordo(1,2,n); for(i=1;i<=n;i++) cout<<x[i]<<" "; } } }
eliminarea elementelor pare din vector #include <iostream.h> int n,x[100]; void f(int i,int &n){ int aux,j; if (i<=n){ if (x[i]%2==0){ for(j=i;j<n;j++){ x[j]=x[j+1]; n=n-1; }
f(i,n); else f(i+1,n); int main(){ int i; cin>>n; for(i=1;i<=n;i++) cin>>x[i]; f(1,n);
}}
testare daca e palindrom #include <iostream.h> int inv(int n, int x){ if (n==0) return x; else return inv(n/10,x*10+n%10); } int main() { int n; cin>>n; int x=0; if(inv(n,x)==n) cout<<"da"; else cout<<"nu"; }
verificarea existentei unui nr intr-un vector #include<iostream.h> int v[100],n,x; int verifexistenta(int n, int x){ if(n==0) return 0; else if(v[n]==x) return 1; else return verifexistenta(n-1,x); } int main(){ int i; cin>>x; cin>>n; for(i=1; i<=n; i++) cin>>v[i]; if(verifexistenta(n,x)==0) cout<<"nu exista"; else cout<<"exista"; }