Hallo,
ich hätte eine Frage zur Rekursion, angenommen diese Funktion ist gegeben:
Code:
public static int gcd(int p, int q){
while (q!=0) {
int old_q = q;
q = p % q;
p = old_q;
}
return p; }
Diese soll Rekursive dargestellt werden. Mein Ansatz wäre:
Code:
public static int gcdre(int p, int q){
if(q==0){
return p; }
return gcdre(p, q%p); }
und wenn man auf ein if/while/for verzichten möchte:
Code:
public static int gcd(int p, int q){
return (q==0) ? p : gcd(p, q%p); }
Bei kleinen Zahlen bringt mir mein Ansatz ein richtiges Ergebnis, aber bei größeren Zahlen ein java.lang.StackOverflowError. Wie könnte man dies besser lösen?
(Entschuldigt bitte diese banale Frage, ich bin noch Anfänger und dies ist ein Klausur relevantes Thema für mich.