#include #include /** algorithme de la puissance par multiplication successives**/ int puissance (int a, int b) { if(b==0) return 1; else a = a * puissance(a,b-1); return a; } /** algorithme de PGCD par soustractions successives**/ int PGCD(int a, int b) { if(a==b) return a; else if(a>b) PGCD(a-b,b); else PGCD(a,b-a); } /** algorithme de factorielle **/ int fact(int f) { if(f==0) return 1; else f = f * fact(f-1); } /** algorithme de multiplication **/ int multiplication(int a,int b) { if(b==0) return 0; else a = a + multiplication(a,b-1); return a; } /** algorithme de division **/ int division(int a,int b, int *i) { int k = *i; if(b==0) return -1; if(a=b) { k++; return division(a-b,b,&k); } } int reste_division(int a,int b) { if(b==0) return -1; if(a=b) return reste_division(a-b,b); } int suite(int n, int u0) { if(n==0) return u0 ; else return (2*suite(n-1,u0)+4); } int suite1(int n) { int u0; if(n==0) u0 = 3; else u0 = 2*suite1(n-1)+4; return u0; } int main() { int x,y,k, choix; do{ puts("\n\t\tQuelques algorithmes de recrusivite\n"); puts("\t\tpour calculer la multiplication tappez 1"); puts("\t\tpour calculer le PGCD tappez 2"); puts("\t\tpour calculer le factorielle tappez 3"); puts("\t\tpour calculer la Division entiere tappez 4"); puts("\t\tpour calculer la puissance tappez 5"); puts("\t\tpour sortir tappez 0"); do{ printf("\t\tVotre choix : \t"); scanf("%d",&choix); }while(choix <0 || choix >5); if(choix) { printf("\t\tVeuillez introduire les valeurs necessaires :\n"); scanf("%d",&x); } switch(choix){ case 1: scanf("%d",&y); printf("\n\t\t %d x %d = %d\n",x,y,multiplication(x,y)); break; case 2: scanf("%d",&y); printf("\n\t\t PGCD(%d,%d) = %d\n",x,y,PGCD(x,y)); break; case 3: printf("\n\t\t %d! = %d\n",x,fact(x)); break; case 4: scanf("%d",&y); k=0; printf("\n\t\t %d / %d = %d\n",x,y,division(x,y,&k)); break; case 5: scanf("%d",&y); printf("\n\t\t %d^%d = %d\n",x,y,puissance(x,y)); break; case 0: exit(0); break; } }while(choix); return 0; }