Rekursive Methode - Java
Neben Informationen:
Chip nicht unterstützt, Multiplikation, nur neben. Ich sollte arbeiten, um dieses problem, indem Sie eine rekursive Methode mult(), die Multiplikation führt
von x und y durch hinzufügen von x sich y mal. Seine Argumente sind die x-und y-und seine Rückkehr
Wert ist das Produkt von x und y. Sollte ich dann schreiben und der Methode main() zu
nennen Sie es.
Es ist das Reine logische denken, aber ich verirre mich jedes mal, wenn ich versuche zu denken, was zu tun ist.
Ich bin stecken in der Mathematik-Teil..
Was ich habe, dass nicht funktioniert und ich weiß, dass die Mathematik falsch ist, aber ich bin nicht gut darin:
public static void mult(int x, int y) {
x = 0;
y = 0;
if (y > 0) {
for (int i = 0; i < y; i++) {
x = x * (x * y);
return mult(x, y);
}
}
}
- "Kann mir jemand helfen den code schreiben?" Nein. Aber wir können helfen, wenn Sie vor einem konkreten problem und leiten Sie weiter. Sie könnten damit anfangen, indem es rekursiv ist, und dann Fragen Sie diese wieder ein..
- Hausaufgaben Probleme nicht gehen, auch hier.
- Es ist rekursive jetzt, denke ich. Kann Sie Punkt, wo es schief geht?
- Die Rekursion wird nie kündigen. Sie brauchen, um herauszufinden, eine Bedingung zum stoppen des recursing.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich höre "Rekursion", erwarte ich zwei Dinge sehen:
Also, wo sind deine? Beginnen Sie mit dem schreiben diese nach unten in Ihre Worte, bevor Sie code schreiben.
Eine Möglichkeit ist die Verwendung von einem Akku gespeichert wird der aktuelle Wert der Multiplikation. Ich ersetzen Sie fehlende Aussagen ??? :
Könnte man tatsächlich tun, statt sich zu vermehren. Oh, und vielleicht, wenn Sie nicht beide x und y auf null, Sie hätte noch etwas hinzuzufügen 😉
Eine Letzte Sache: Wenn Sie möchten, eine rekursive Lösung, brauchen Sie nicht die for-Schleife.
Java hat keine TCO by design", also mit Rekursion für die lineare (nicht Baum -) Verfahren ist eine sehr schlechte Idee. Besonders für eine solche Aufgabe, die wahrscheinlich zu einem Engpass in Ihrem Programm. Schleife statt.
Oh, es muss rekursiv sein sowieso? Sieht aus wie eine Hausaufgaben-Aufgabe. Tun Sie es sich dann.
Alles, was Sie brauchen, zu erinnern ist, dass eine Multiplikation ist eine wiederholte addition (vorausgesetzt, dass beide Operanden
>= 0
), so haben wir:y
nully
ist nicht null, dann fügen Siex
man mehr Zeit, und subtrahieren1
ausy
Beachten Sie, dass, solange
y
positiv ist, wird es schließlich einen Wert von null. Also im Grunde halten wir das hinzufügenx
eine Gesamtzahl vony
mal, das ist es, was ich meine:Den gleichen code geschrieben werden kann in einem tail-rekursive Stil, auch - was bedeutet: es gibt nichts zu tun, nach dem rekursiven Aufruf zurück, und dies ist wichtig für bestimmte Sprachen, die Unterstützung einer so genannten tail-call-Optimierung:
Den oben aufgerufen werden, wie folgt, zu bemerken, dass der Letzte parameter ist immer in null initialisiert:
(mult(-2,-5, 0));
?dies die Lösung war übrigens