public class ackermann {
public static void main(String[] args) {
long startTime;
long stopTime;
long elapsedTime;
startTime = (new Date()).getTime();
int num = Integer.parseInt(args[0]);
System.out.println("Ack(3," + num + "): " + Ack(3, num));
stopTime = (new Date()).getTime();
elapsedTime = stopTime - startTime;
System.out.println("elapsed time: " + elapsedTime);
}
public static int Ack(int m, int n) {
return (m == 0) ? (n + 1) : ((n == 0) ? Ack(m-1, 1) :
Ack(m-1, Ack(m, n - 1)));
}
}
ici c'est fibo
import java.util.Date;
public class fibo {
public static void main(String args[]) {
long startTime;
long stopTime;
long elapsedTime;
startTime = (new Date()).getTime();
int N = Integer.parseInt(args[0]);
System.out.println(fib(N));
stopTime = (new Date()).getTime();
elapsedTime = stopTime - startTime;
System.out.println("elapsed time: " + elapsedTime);
}
public static int fib(int n) {
if (n < 2) return(1);
return( fib(n-2) + fib(n-1) );
}
}
quelqu'un saurait comment optimiser d'avantage ces deux code?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pif
si tu programme simplement et récursivement ces de codes, ils sont de complexité exponentielles. Il faut donc que tu utilise une structure de donnée (matrice pour ack et vecteur pour fibo) en mémoire afin de stocker les valeurs...
Du coup tu est en complexité linéaire...
si tu programme simplement et récursivement ces de codes, ils sont de
complexité exponentielles. Il faut donc que tu utilise une structure de
donnée (matrice pour ack et vecteur pour fibo) en mémoire afin de
stocker les valeurs...
si tu programme simplement et récursivement ces de codes, ils sont de complexité exponentielles. Il faut donc que tu utilise une structure de donnée (matrice pour ack et vecteur pour fibo) en mémoire afin de stocker les valeurs...