Fakultätsfunktion Rekursiv Berechnen aber mit Array

Bobi

Bekanntes Mitglied
Guten Abend an alle,
Ich mochte Fakultetsfunktion rekursiv berechne das ist ja leicht aber ich möchte das meine rekursive Funktion eine Arrey mit bestimmte lenge übergegeben bekommt die funktion berechnet rekursiv Fakultet von alle zahlen die in Array stehen, dann speichert züruckt und schickt wieder zurück. leider ich weiss nicht wie die Werte von Array ablese berechne und wieder Speichere.
Bitte hillft mir 🙂
Danke schon im voraus
das ist meine Code.

Java:
import java.util.Scanner;
public class FactorialFacMain {
    public static void main(String[]args){
        Scanner scan = new Scanner(System.in);
       
        FactorialFac fac = new FactorialFac();
        int lenge;
        System.out.println("Wie gros soll ein Array sein?");
        lenge = scan.nextInt();
       
        long [] myAr = new long [lenge];
       
        for(int i = 0; i < myAr.length; i++ ){
        System.out.println((i + 1)+ " te: Wert Eingeben");
        myAr[i] = scan.nextLong();     // Die werte in Array Speichern.
        }
    }
}

public class FactorialFac {
    int n;
    public int recFactorial(int n){
        if(n == 0)
            return n = 1;
        else{
         return  n *    recFactorial(n - 1);
        }
    }
}
 
Wäre es bei deinem jetzigen Stand nicht einfacher nach dem Einlesen einfach über das Array mit den Zahlen zu iterieren, von jedem Wert die Fakultät mit deiner recFactorial(int n) Methode berechnen zu lassen und den Wert wieder in einem neuen Array zu speichern?

Java:
public static void main(String[] args)
{
     long[] nums = ..
     long[] numFactorial = ...;

     // Zahlen einlesen

     for(int i = 0; i < nums.length; i++)
         numFactorial[i] = recFactorial(..);

    // ggf. Array ausgeben lassen
}
 
Zuletzt bearbeitet:
Als erstes frage ich mich warum du eine extra interne Klasse erstellst?
Um die Idee umzusetzen musst du folgenden Pseudo Code umsetzen:
Code:
Erstelle ein Array mit den zu berechnenden Fakultäten
Erstelle noch ein Array wo die Fakultäten gespeichert werden
Dann gehe in einer for Schleife alle Elemente des ersten Arrays durch
Bilde die Fakultät und speicher sie im zweiten Array
Rückgabe des zweiten Arrays
Es ist nicht notwendig ein zweites Array zu erstellen, wenn du das erste Array nicht mehr bauchst.
 
Was meinst du mit interne Klasse?
Ich stelle mir so vor, ich habe viele Klassen mit verschiedene Methoden und habe ich nur eine Klasse mit ein mein Methode. Wo ich die Methoden von Andere Klassen abrufen kann.

In arrey Zahlen speichern mache ich mit for schleife, aber wenn ich die werte Auslesen und wieder zurück
mit for schleifen speichern, wie kombiniere ich dann mit meine Rekursive Method ?
 
Sorry, ich meinte innere Klasse. Und die Klasse FactorialFac ist eine innere Klasse, da sie in der Klasse FactorialFacMain geschrieben wurde.
 
Java:
// arrays anlegen
long[] nums = ...;
long[] factorials = new long[nums.length];

// Du bekommst die einzelnen Werte eines Arrays indem du über es iterierst:
for(int i = 0; i < nums.length; i++)
{
    // die Werte brechnest du dann mit deiner recFactorial-Methode und
    // speicherst die Werte dann in dem Array.
    factorials[i] = recFactorial(nums[i]);
}

// Ausgeben lassen kannst du dir das Array auch mit einer for-Schleife.
 
Wäre es bei deinem jetzigen Stand nicht einfacher nach dem Einlesen einfach über das Array mit den Zahlen zu iterieren, von jedem Wert die Fakultät mit deiner recFactorial(int n) Methode berechnen zu lassen und den Wert wieder in einem neuen Array zu speichern?

Java:
public static void main(String[] args)
{
     long[] nums = ..
     long[] numFactorial = ...;

     // Zahlen einlesen

     for(int i = 0; i < nums.length; i++)
         numFactorial[i] = recFactorial(..);

    // ggf. Array ausgeben lassen
}

Ich habe nicht ganz verstanden, Meinst du dass, ich sofort beim Array berechnete Werte speichern? es wird ja vielleicht leicht aber, es geht nicht um Leichtigkeit sondern ich möchte wissen wie ich das Array in eine rekursive Methode übergebe berechne und weider zurück bekomme.
 
Er meint das so, wie er es in seinem Code geschrieben hat. Und warum willst du die Funktion rekursiv machen und keine for Schleife nutzen?
 
Um das nur noch kurz richtig zu stellen.

@Java20134
Als erstes frage ich mich warum du eine extra interne Klasse erstellst?

Das ist keine innere Klasse sondern nur 2 Klassen in ein [code=Java]..[/code] Tag gepackt. Der Compiler würde an dieser Stelle gar keine innere Klasse zulassen, da die - wie du an der Klammerung siehst - die "äußere" Klasse schon geschlossen ist 😉
 

Neue Themen


Zurück
Oben