Rekursion Rätsel

Diskutiere Rekursion Rätsel im Java Basics - Anfänger-Themen Bereich.
X

xImJugo

Hallo zusammen,
ich habe dieses Semester mein Wirtschaftsinformatik Studium angefangen. Jetzt steh ich vor diesem Rätsel und kann es einfach nicht lösen.

Hier das Rätsel:
- den ersten Teil der Aufgabe hab ich geschafft, denn es war leicht zu ertesten, dass es sich um eine Potenzfunktion handelt, aber der zweite Teil verwirrt mich einfach nur. Man soll die unknown Funktion so ändern, dass die Bedingungen unten erfüllt sind und man sieht ja, dass es sich unten um eine Multiplikation von a und b handelt, aber wie soll man das umsetzen ? Bitte ich brauch das.

Gegeben sei die Funktion unknown der Klasse Recursion:
1 public class Recursion {
2 public static int unknown(int a, int b) {
3 if (b == 0) {
4 return 1;
5 }
6 if (b % 2 == 0) {
7 return unknown(a * a, b / 2);
8 }
9 return unknown(a * a, b / 2) * a;
10 }
11 }

Schreiben Sie diese Klasse ab und analysieren Sie die Funktion. Betrachten Sie hierfür beispielsweise
die Ausgabewerte für die folgenden Eingaben:
• a = 2, b = 0
• a = 3, b = 2
• a = 5, b = 3

Welche Funktionalität wird hier implementiert? Benenne Sie die Funktion entsprechend neu und
erstellen Sie einen aussagekräftigen Kommentar, der die Funktionalität beschreibt.
Welche minimalen Änderungen müsste man an der Funktion machen, um folgende Ergebnisse zu
den gegebenen Eingaben zu erhalten?
• a = 1, b = 1; Ergebnis: 1
• a = 2, b = 0; Ergebnis: 0
• a = 0, b = 2; Ergebnis: 0
• a = 3, b = 2; Ergebnis: 6
• a = 2, b = 3; Ergebnis: 6
• a = 5, b = 3; Ergebnis: 15
• a = 3, b = 5; Ergebnis: 15
• a = 10, b = 10; Ergebnis: 100

Kopieren Sie den Methodenrumpf in eine neue Funktion mit den selben Parametern und dem
Namen recursiveA. Wenden Sie nun die Änderungen an, um die neue Funktionalität zu erhalten.
 
H

httpdigest

Eine Multiplikation ist nur eine wiederholte Addition (bei natürlichen Zahlen).
In der gezeigten Methode wird die Potenzierung ja über eine wiederholte Multiplikation gelöst.
Wandele das also einfach nur so ab, dass aus der wiederholten Multiplikation eine wiederholte Addition wird, mit 0 statt 1 als neutrales Element (bei der Abbruchbedingung).
 
X

xImJugo

Ich bedanke mich wirklich sehr. Wie kann ich nur so dumm sein bzw. viel zu kompliziert denken. Auf jeden Fall es funktioniert jetzt und ich bin sehr dankbar.
Schönen Tag dir noch
 
J

JustNobody

Öhm, habe ich gerade ein Denkfehler oder ist der Code nicht Korrekt? Müsste der Code bei b==0 nicht a zurück geben, damit es die Potenz entsprechend berechnet? Ist das ein Tippfehler beim abschreiben?

Edit: Ach ja, klar. Er kommt ja immer bei b>0 immer bei b==1 "vorbei" und da wird dann natürlich 1 * a ausgeben. Also alles klar! War nur auf dem ersten Blick kurz verwirrt.
 
Thema: 

Rekursion Rätsel

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben