Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- int factorielle(int n){
- static int cache = 1;
- static int N = 1;
- int nbBoucles = 1;
- int tmp;
- if (n == N) {
- printf("N : %d\n", N);
- return cache;
- }
- if(n < N){
- cache = 1;
- for(int i = 1;i <= n; i++){
- cache = cache*i;
- nbBoucles++;
- N = i;
- }
- printf("Nombre de boucles : %d\n", nbBoucles);
- printf("N : %d\n", N);
- return cache;
- }
- if(n > N){
- for(int i = N + 1;i <= n; i++){
- cache = cache*i;
- nbBoucles++;
- tmp = i;
- }
- N = tmp;
- printf("Nombre de boucles : %d\n", nbBoucles);
- printf("N : %d\n", N);
- return cache;
- }
- }
- int main(){
- // 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
- printf("%d\n", factorielle(13)); //La factorielle est fausse à partir de n = 13
- printf("%d\n", factorielle(8));
- printf("%d\n", factorielle(5));
- printf("%d\n", factorielle(3));
- /*Proposition : Nous pourrions créer un systeme de multiplication comme dans l'exercice 1 afin de stocker les grands nombres
- plus facilement, nous pouvons aussi faire un systeme de cache qui aurait une meilleure capacitée.*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement