iterative Berechnung

Status
Nicht offen für weitere Antworten.

Palmosun

Mitglied
Hallo,
Ich brauche mal wieder eure Hilfe.

Gegeben ist die folgende Funktion
F(1) = 12
F(2) = 19
F(n+2) = F(n+1) + F(n)
für alle n∈IN.
a) Berechnen Sie F(3) und F(4).
b) Schreiben Sie eine rekursive Java-Methode, die diese Funktion berechnet.
c) Schreiben Sie eine iterative Java-Methode, die diese Funktion berechnet.

zu a)

F(3) =F(1+2) = F(1+1) + F(1)
= 19 + 12
= 31

F(4) = F(2+2) = F(2+1) + F(2)
= 31 + 19
= 50

zu b)
Code:
public int rekursivBerechnen(int zahl)
    {
        int puffer=0;;
        
        if(zahl == 1)           // Rekusionsbedingung
        {
            puffer = 12;
        }
        else if(zahl == 2)      // Rekursionsbedingung
        {
            puffer = 19;
        }
        else
        {
            puffer = rekursivBerechnen(zahl-2 +1) + rekursivBerechnen(zahl-2);  //Rekursionsvorschrift
        }
        
        return puffer;
}


bei c) habe ich meine Probleme. Würde eine for-Schleife benutzten aber weiter weiß ich momentan nicht mehr.
Vielleicht könnt ihr mir einen kleinen nützlichen Tipp geben.

Sind a) und b) soweit richtig?

MfG
 

Marco13

Top Contributor
Eine for-Schleife ist ok. Dann noch ein paar if-Abfragen am Anfang, wie schon bei der Rekursiven Variante, und ein paar Variablen wie
int FvonN = ...
int FvonNminus1 = ...
Versuch's mal, und poste deine Ergebnisse.
 

Palmosun

Mitglied
Ich denke ich habe es jetzt endlich geschafft:
Code:
 public int iterativBerechnen(int zahl)
    {
        int erg = 0;
        
        int fvonN = zahl-2; 
        int fvonNplus1;
        
        for(int i=0; i<fvonN;i++)
        {   
            fvonN = zahl-2;
            fvonNplus1 = zahl-1;
            
            if(fvonN == 1 || fvonNplus1 == 1)
            {
               erg += 12;
            }
            if(fvonN == 2 || fvonNplus1 == 2)
            {
                erg += 19;
            }
            zahl += -1;        
        }
        return erg;
    }

Kann man es noch etwas einfach/kürzer schreiben?

MfG
 

Zed

Bekanntes Mitglied
Also ich finde die kurz genug. Spontan würde ich sagen Zeitverschwendung sich weiter Gedanken zu machen um das zu Optimieren.
 
S

SlaterB

Gast
zur rekursiven Lösung: Zahl < 1 noch abfangen, sonst Endlosschleife

----

deine iterative Lösung verstehe ich kaum,
die Endzahl der Schleife fvonN in der Schleife zu ändern ist ziemlich verboten,

baue dir eine Schleife von 0 oder 1 bis zahl, ganz schlicht,
dann berechne in der Schleife f(1), f(2), f(3) usw.

merke dir die Werte in zwei temp-Variablen, so hast du es ja auch wohl schon mit fvonN usw

am Ende gibst du die Summe der letzten beiden Werte der Laufvariablen zurück, fertig


ist aber evtl. auch zu sehr die Rekursion nachgebaut,
deine Variante addiert wohl ständig 12 und 19,
wenn das funktioniert, dann wäre das eine interessante Alternative,
hast du hoffentlich mit größeren Werten als 1-5 getestet

-----

die Spezialfälle zahl < 3 kannst du vorher per if behandeln, das muss nicht auch noch durch die Schleife laufen,
die Schleife kann dann auch bei i=2 oder i=3 beginnen
 
G

Guest

Gast
bei zahlen die größer als 4 sind, klappte meine alte Lösung nicht...

Jetzt müsste es richtig sein:

Code:
public int iterativBerechnen(int zahl)
    {
        int erg1 = 0;
        int erg2 = 0;
        int puffer = 0;

       
        for(int i=1; i<=zahl;i++)
        {   
            if(i == 1)
            {
               erg1 = 12;
            }
            else if(i == 2)
            {
                erg2 = 19;
            }
            else
            {
                puffer = erg2;
                erg2 =  erg2 + erg1;
                erg1 = puffer;
                
            }
        }
        return erg2;
    }
 

Marco13

Top Contributor
Code:
class Iterativ
{
    public static void main(String args[])
    {
        System.out.println(iterativBerechnen(1));
        System.out.println(iterativBerechnen(2));
        System.out.println(iterativBerechnen(3));
        System.out.println(iterativBerechnen(4));
        System.out.println(iterativBerechnen(5));
    }

    public static int iterativBerechnen(int zahl)
    {
        int erg1 = 0;
        int erg2 = 0;
        int puffer = 0;


        for(int i=1; i<=zahl;i++)
        {
            if(i == 1)
            {
               erg1 = 12;
            }
            else if(i == 2)
            {
                erg2 = 19;
            }
            else
            {
                puffer = erg2;
                erg2 =  erg2 + erg1;
                erg1 = puffer;

            }
        }
        return erg2;
    }
}

Die Ausgabe...
0
19
31
50
81
stimmt wohl noch nicht ganz. Tipp: Mach die if-Abfragen VOR der Schleife, und gib dort ggf. gleich den richtigen Wert zurück.
 
G

Guest

Gast
Wenn ich das jetzt richtig nachgerechnet habe, stimmt das doch

f(1) = 12
f(2) = 19
f(3) = 31
f(4) = 50
f(5) = 81
f(6) = 131
usw.
 

Marco13

Top Contributor
So fänd' ich's ein bißchen hübscher, aber ist nocht so wichtig
Code:
class Iterativ
{
    public static void main(String args[])
    {
        System.out.println(iterativBerechnen(1));
        System.out.println(iterativBerechnen(2));
        System.out.println(iterativBerechnen(3));
        System.out.println(iterativBerechnen(4));
        System.out.println(iterativBerechnen(5));
    }

    public static int iterativBerechnen(int zahl)
    {
        int erg1 = 12;
        int erg2 = 19;
        if (zahl <= 1)
        {
            return erg1;
        }
        if (zahl == 2)
        {
            return erg2;
        }
        for(int i=3; i<=zahl;i++)
        {
             int puffer = erg1 + erg2;
             erg1 = erg2;
             erg2 = puffer;
        }
        return erg2;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
C Lineare Rekursion -> iterative Schleife Java Basics - Anfänger-Themen 3
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
R Differenz Iterative Java Basics - Anfänger-Themen 14
R Summe Iterative Java Basics - Anfänger-Themen 6
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
1 Berechnung von PI mithilfe von Buffons Nadelproblem Java Basics - Anfänger-Themen 2
G Berechnung zwei Komplexen Zahlen Java Basics - Anfänger-Themen 34
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
K Annährende ganzzahlige Berechnung der Wurzel Java Basics - Anfänger-Themen 8
L Berechnung von Perioden Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25

Ähnliche Java Themen

Neue Themen


Oben