Je travaille sur une fonction récursive Ackermann en Java. Je reçois une erreur à la ligne récursive peut, 23.Apprentissage Java Recursion, fonction Ackerman
return Ack(m - 1, Ack(m, n - 1));
Merci beaucoup si quelqu'un pouvait indiquer ce qui est faux.
-Kyle
/*enter code here
Ackerman's function, A(m, n) is defined:
A(0 , n) = n + 1 for n >= 0
A(m , 0) = A(m – 1 , 1) for m > 0
A(m , n) = A(m – 1 , A(m , n - 1)) for n >= 0
*/
public class AckFun {
public static int Ack(int m, int n) {
if (m == 0) {
return 2 * n;
} else if (m >= 1) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 2;
} else {
return Ack(m - 1, Ack(m, n - 1));
}
}
return n; // Not sure what to return here, Eclipse suggested this.
}
public static void main(String args[]) {
System.out.println(Ack(3, 4));
}
}
Eh bien la raison pour laquelle Eclipse requiert le "retour n" est que sinon vous auriez une section qui ne retourne rien. votre méthode est de la forme: si (a) sinon si (b) ... mais si ni a ni b n'est vrai, alors vous finissez hors de l'un ou l'autre bloc. –
J'aime ça c'est ** java.lang.StackOverflowError ** – beggs
Vous aimez le site? – Benzle