Rekursive Multiplikation

FiselM

Mitglied
Ich habe ein Problem in dem ich die Multiplikation zweier Zahlen rekursive lösen soll.

//Rekursive Multiplikationsberechnung
import ConsoleInOut.*;
class Fakultaet
{
static int Fak(int a, int b, int c) //Annahme: n > 0
{
c = a + a;
b--;
return c;

//if (b == 1)
//return c; //Ende, wenn n < 2 ist
}
public static void main (String args[])
{
System.out.println();
System.out.println("Wert der ersten Zahl ein: ");
int a = Console.console_in_int();
System.out.println("Wert der zweiten Zahl ein: ");
int b = Console.console_in_int();
if (a > 0 && b > 0)
{
int c = 0;
int Fak = Fak(a,b,c);
System.out.println("Ergebnis :" + Fak);
}
}
}

In meinem Versuch sind noch Fehler und ich finde die Fehler nicht?

Viele Grüße,
ein Verzweifelter
 
Hallo,

Denn such ich ja und komme damit nicht klar.
Kann mir jemand mal die Lösung für eine Rekrusive Methode zeigen?

Viele Grüße,
 
Ich glaube kaum, dass dir jemand die fertige Lösung präsentieren wird.
Rekursion bedeutet hier, dass sich die Methode selbst aufruft, aber das ist bei dir nicht der Fall. Zudem ist deine Rechnung auch komplett falsch.

Zum Beispiel
5! = 5 * 4!

In Worten:
Die Fakultät von 5 ist 5 multipliziert mit der Fakultät von 4.


Du müsstest eigentlich das nur in Java-Code ausdrücken, dann hast du die Rekursive Lösung.

MFG

zEriX
 
Zuletzt bearbeitet:
Hallo,
Ich komme mit dem Rumpf einer rekrusiven Methode nicht klar,
kann mir mal einer ein Beispiel mit der Steruerung geben?

Viele Grüße,
 
Mein nächster Ansatz zum Rekrusiven Problem.

//Rekursive Multiplikationsberechnung
import ConsoleInOut.*;
class Fakultaet
{
static int Fak(int a, int b)
{
if (b == 1)
return 1;
else
return a + a Fak(b-1); //Rekursiver Aufruf

}

public static void main (String args[])
{
System.out.println();
System.out.println("Wert der ersten Zahl ein: ");
int a = Console.console_in_int();
System.out.println("Wert der zweiten Zahl ein: ");
int b = Console.console_in_int();
if (a > 0 && b > 0)
{
int Fak = Fak(a,b);
System.out.println("Ergebnis :" + Fak);
}
}
}

Nur wiederholt sich bei mir immer noch nicht der Vorgang der Rekrusivität?

Viele Grüße, Michael
 
Java:
public class Fakultaet {

	public static void main (String[] args) {
		int n = 5;
       	System.out.println("n! = " + fakultaet(n));
   	}

	private static long fakultaet(int n) {
    	if(n==0 || n==1) {
    		return 1;
    	} else {
			return n*fakultaet(n-1);
    	}
	}
}
 
Vielen Dank für den beschrieben Lösungswert

jezt benötige ich noch eine rekrusive Funktion und zwar eine Multiplikation
in der zwei Zahlen zum beispiel 5 und 3 eingelesen wird und das Ergebnis
rekrusiv ermittelt.

Das Produkt soll als Addition des Faktor 1 sein und die Rekursion soll solange
durchgeführt werden bis die zweite Zahl = 1 ist?

Viele Grüße, Michael
 
Zurück