Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. int factorielle(int n){
  7.   static int cache = 1;
  8.   static int N = 1;
  9.   int nbBoucles = 1;
  10.   int tmp;
  11.   if (n == N) {
  12.     printf("N : %d\n", N);
  13.     return cache;
  14.   }
  15.   if(n < N){
  16.     cache = 1;
  17.     for(int i = 1;i <= n; i++){
  18.       cache = cache*i;
  19.       nbBoucles++;
  20.       N = i;
  21.     }
  22.     printf("Nombre de boucles : %d\n", nbBoucles);
  23.     printf("N : %d\n", N);
  24.     return cache;
  25.   }
  26.   if(n > N){
  27.     for(int i = N + 1;i <= n; i++){
  28.       cache = cache*i;
  29.       nbBoucles++;
  30.       tmp = i;
  31.     }
  32.     N = tmp;
  33.     printf("Nombre de boucles : %d\n", nbBoucles);
  34.     printf("N : %d\n", N);
  35.     return cache;
  36.   }
  37. }
  38.  
  39. int main(){
  40.   // On remarque que le nombre de boucle est plus petit quand on a calculé une factorielle plus petit avant, on économise du temps de calcul
  41.   printf("%d\n", factorielle(13)); //La factorielle est fausse à partir de n = 13
  42.   printf("%d\n", factorielle(8));
  43.   printf("%d\n", factorielle(5));
  44.   printf("%d\n", factorielle(3));
  45.   /*Proposition : Nous pourrions créer un systeme de multiplication comme dans l'exercice 1 afin de stocker les grands nombres
  46.   plus facilement, nous pouvons aussi faire un systeme de cache qui aurait une meilleure capacitée.*/
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement