Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » iterative Programmversion eines Java Quellcodes » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen iterative Programmversion eines Java Quellcodes
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
KaterIna
unregistriert
iterative Programmversion eines Java Quellcodes Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public class Schlüssel
{
    public static void main (String args [])
    {
    Aufgabe meineAufgabe = new Aufgabe ();
    System.out.println (meineAufgabe.beginne(37));
    }
}

public class Aufgabe
{
    public int beginne (int xint y)
    {
          if (1<y) 
                     {
                            return x*beginne (xy-1);
                     }
                      else
                     {
                            return x;
                     }
       }
}

Meine Ideen:
Wir haben einen neuen Informatiklehrer und ich wir haben vorher nie über iterative Programmversionen gesprochen.
Kann mir jemand erklären, was der Lehrer überhaupt von uns möchte und wie ich nun vorgehen muss? Ich wäre über jede hilfreiche Antwort dankbar!

Es handelt es sich um eine Exponentialfunktion, die mit dem Quellcode ausgerechnet werden können, insofern die Werte der Variablen stimmen.
16.08.2020 08:49
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich denke, es geht um rekursive Programmierung. Was "iterarive Programmversionen" sein sollen, weiß ich auch nicht.

In Deinem Programm-Beispiel wird ja die Methode "beginne()" von sich selbst aufgerufen. Also in beginne ist ein Aufruf von beginne selbst drin, nur mit anderen Parametern (von y wird ein abgezogen). Einen solchen Aufruf nennt man rekursiv. Den ganzen Ablauf, dass das quasi so ineinander geschachtelt ist, nennt man eine Rekursion.
Irgendwann muss die Rekursion aber abbrechen, sonst würde sie ja immer tiefer gehen, unendlich lange. Das ist hier die Fall, sobald die Bedingung 1<y nicht mehr erfüllt ist. Wenn also y kleiner oder gleich 1 ist, ruft er nicht mehr sich selbst auf, sondern gibt einen konkreten Wert direkt zurück (hier einfach den Wert von x).

Um zu verstehen, wie eine solche Rekursion funktioniert, kannst Du einfach mal überlegen, mit welchen Zahlenwerten die Methode jeweils aufgerufen wird:
Beim ersten Aufruf ist ja x = 3 und y = 7. Dann kommt die if-Bedingung, die wahr ist, weil da ja steht if(1<7)... Also ruft er die Methode wieder auf, dieses Mal aber mit y=6. Dann kommt er bei diesem rekursiven Aufruf wieder auf das if, jetzt aber mit einem Wert von y=6. Immernoch ist die Bedingung erfüllt, er ruft also schon wieder die Methode beginne auf, dieses Mal aber mit den Parameter x=3 und y=5.
Das geht so lange, bis die Funktion mit y=1 aufgerufen wird. Dann ist das if nicht mehr erfüllt, er gibt also direkt x mit "return x" zurück. Das ist der Rückgabe Wert für den Aufruf eine Stufe oben drüber, wo also die Funktion mit x=3 und y=2 aufgerufen wurde. Also rechnet er 3 mal den Rückgabewert von (3, 1), der ja 3 ist, also rechnet er für beginne(3, 2) = 3*3 = 9. Und siehe da: Das ist ja gerade der Wert von 3^2. Dieser Wert (also die 9) wird jetzt an den Aufruf mit beginne (3, 3) zurück gegeben und siehe da: 3* 9 = 27, das ist gerade 3^3, usw.

Du kannst Dir das also so vorstellen: Jemand frag Dich, wieviel ist 3^7. Dann sagst Du: Ja das ist einfach drei mal 3^6. Dann sagt der wieder: Ja toll, aber was ist 3^6. Dann sagst Du: Das ist natürlich 3 mal 3^5, sagt der wieder: suuuper, aber was ist 3^5, sagst Du: "Hallo? natürlich 3 mal 3^4, ist doch logisch!", sagt er (schon leicht genervt), aber was ist denn 3^4... Das geht so lang, bis er sagt: Was ist denn 3^1 und Du sagst: Das ist einfach, das ist nämlich genau 3.
Dann setzt er sich hin und muss alles zurück gehen: 3^1 ist 3, 3^2 war 3 mal 3^1, also 3*3=9, 3^3 war 3*3^2, also 3*9 ist gleich 27. 3^4 war 3 mal 3^3 also 3 mal 27, das ist 81, 3^5 ist 3*3^4, also 3*81, das ist 243, usw.

Das mit den Rekursionen kommt aus der Mathematik. Da gibt es auch rekursive Funktions-Definitionen. Z. B. kann man Fakultät so definieren, oder eben hier auch die ganzzahligen Potenzzahlen.

Gruß
Marco
17.08.2020 17:42 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » iterative Programmversion eines Java Quellcodes