40 lines
828 B
C
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);
|
|
}
|