mp2i-info/tp1/exo1.c
2025-09-23 14:20:30 +02:00

40 lines
828 B
C

#include <stdio.h>
#include <stdlib.h>
int f_iter(int a, uint b) {
int acc = 1;
while (b > 0) {
acc = acc * a;
b = b - 1;
}
return acc;
}
int rec(int acc, int a, uint b) {
if (b == 0) {
return acc;
} else {
return rec(acc * a, a, b - 1);
}
}
int f_rec(int a, uint b) { return rec(1, a, b); }
int f_exp(int a, uint b) {
if (b == 1) {
return a;
} else if (b % 2 == 0) {
return f_exp(a * a, b / 2);
} else {
return a * f_exp(a * a, (b - 1) / 2);
}
}
int main() {
int a = 6;
uint b = 7;
printf("Méthode iterative : %d^%d = %d\n", a, b, f_iter(a, b));
printf("Méthode recursive : %d^%d = %d\n", a, b, f_rec(a, b));
printf("Méthode d'exponentation rapide : %d^%d = %d\n", a, b, f_exp(a, b));
exit(0);
}