www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - Berechnung der F_{n}
Berechnung der F_{n} < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Berechnung der F_{n}: Aufgabe
Status: (Frage) beantwortet Status 
Datum: 19:35 So 16.04.2006
Autor: Fahnder

Aufgabe
Betrachten Sie nun die Definition folgender Zahlenfolge: [mm] (F_{n}) [/mm]
[mm] F_{1}=1 [/mm] , [mm] F_{2}=2 [/mm] , $ [mm] F_{n}=F_{n-1} [/mm] $+$ [mm] F_{n-2} (n\ge3) [/mm] $
Schreiben Sie ein Javaprogramm zur Berechnung der $ [mm] F_{n}. [/mm] $. Nennen Sie Ihre Klasse "Aufgabe3", ausgegeben werden soll lediglich das jeweilige $ [mm] F_{n}. [/mm] $ zur Eingabe n, weiter nichts

Hi,
leider hatte ich in der Schule kein Informatik, muss diese Übungsaufgabe, aber am Dienstag abgeben und leider habe ich keine Ahnugn, wie ich beginnen soll. Wäre schön, wenn mir jemand mal erklären könnte, wie man was beginnt, also ich kenne die Begriffe und Zeichen, aber ich weiss nicht genau wie man die in den zusammenhang bringt.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Fahnder

        
Bezug
Berechnung der F_{n}: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:04 So 16.04.2006
Autor: sirprize

Hi Fahnder!

Was genau ist denn das Problem? Weisst du nicht, wie du das Java-Programm anfangen sollst? Oder verstehst du nicht genau, was denn mit diesen [mm] $F_{n}$ [/mm] gemeint ist? Oder ist es der rekursive Aufruf, der dir Schwierigkeiten bereitet?

Viele Grüße und frohe Ostern,
Michael

Bezug
                
Bezug
Berechnung der F_{n}: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:16 So 16.04.2006
Autor: Fahnder

Hi,
also mir ist das mathemische Vorgehen klar. Ich weiss auch, dass ich eine class Aufgabe 3 erstellen soll, wo anhand eines Algorithmus das Ergebnis der [mm] F_{n} [/mm] erscheinen soll für gewissene n, wobei die Anfangswerte in den Algorithmus eingebaut werden. Was ich aber nicht kann, ist das mathematische in die Informatik zu übertragen, ich weiss nicht wie ich beginnen soll, obwohl mir die wichtigsten Begriffe bekannt sind, weiss aber nicht wie sie im Zusammenhang stehen.

Bezug
        
Bezug
Berechnung der F_{n}: Antwort
Status: (Antwort) fertig Status 
Datum: 22:14 So 16.04.2006
Autor: sirprize

Hi,

also gut, hier mal ein paar Tipps:
- In der Klasse Aufgabe3 sollte irgendwo eine Funktion vorkommen, die die Berechnung durchführt. Nennen wir sie mal f. Das ganze sieht dann so aus:

// muss nicht public sein
public class Aufgabe3 {
  // ...
  // verschiedenes Zeug ...
  // ...

  // die Funktion f ist public (d.h. von jeder anderen Klasse aus aufrufbar)
  // static (d.h. man muss kein Objekt der Klasse Aufgabe3 erzeugen)
  // sie bekommt einen int als Parameter (der in der Funktion als n bekannt sein wird)
  // sie liefert einen int zurück (nämlich das Ergebnis)
  public static int f (int n) {
    // hier kommt der Berechnungscode rein
  }
}


- Die beiden Startwerte können (und sollten auch!) fest einprogrammiert sein. Daher muss in der Funktion etwas ähnliches wie das drin sein:

if(n < 3)
  return n;


- In Java können Funktionen rekursiv aufgerufen werden. Das bedeutet, die Funktion f verwendet sich selbst (mit anderen Parametern) zur Berechnung des Endergebnisses. Das ganze könnte also so aussehen:

return f(n-1) + f(n-2);

Das wars im Prinzip. Jetzt noch das ganze zusammenschreiben, die Ein- und Ausgabefunktionen sowie die main-Funktion hinzufügen, und schon hast du deine Aufgabe :-)

Viele Grüße,
Michael

Bezug
        
Bezug
Berechnung der F_{n}: Rüchfrage
Status: (Frage) beantwortet Status 
Datum: 18:05 Mo 17.04.2006
Autor: Fahnder

Hi, also ich habe jetzt versucht, daraus was zu basteln. weiss aber nicht, ob es richtig ist.


public class Aufgabe3 {
public static void main (String[]arg){
//F ist public
//static
//sie bekommt einen int als Parameter
//sie liefert einen int zurück
static int f (int n)= In.readInt()
int n=1
if (n<3) return 1
else (n>=3) return f(n-1)+f(n-2)
Out.printIn()
}

}


Ich habe die Frage in keinem anderem Forum gestellt.
Fahnder

Bezug
                
Bezug
Berechnung der F_{n}: Antwort
Status: (Antwort) fertig Status 
Datum: 18:46 Mo 17.04.2006
Autor: sirprize

Hi Fahnder,

nicht ganz ;-)
So kanns ja gar nicht funktionieren. Das lässt sich so bestimmt nicht kompilieren. Funktionen in Java kannst du als eine Art "Blackbox" sehen. Du gibst irgendwelche Daten rein (die Parameter) und bekommst nach der Verarbeitung eine Antwort (den Rückgabe- oder return-Wert). Und die Funktion f musst du als eine solche Blackbox betrachten. Daher sollte dort die Ein- und Ausgabe aus der Funktion f entfernt werden. Als Ergebnis sollte sowas herauskommen:

die Funktion f:

static int f(int n) {
  if (n<3)
    return n; // return 1 wäre falsch, da für n==2 auch 2 zurückgeliefert werden muss
  else // beim else darf man keine Extrabedingung schreiben - dazu ist "else if" da
    return f(n-1)+f(n-2);
}

Die main-Funktion muss so ähnlich aussehen. Natürlich musst du liesEineZahlEin() und gibAus() durch passende Funktionen ersetzen:

public static void main (String[] args) {
  int zahl = liesEineZahlEin();
  gibAus( f(zahl) );
}


Bezug
        
Bezug
Berechnung der F_{n}: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:51 Mo 17.04.2006
Autor: Fahnder

Hi,
danke erst mal, dass du dich so schnell darum gekümmert hast, naja mir ist ein kleiner Fehler bei der Eingabe unterlaufen, habe ich nach deiner Antwort entdeckt. Für n = 2 ergibt der Wert von F auch 1, daher return 1
Ich habe das jetzt mal so eingeben, wie du es zum teil aufgeschrieben hast, aber fehlt da noch was? das sieht ziemlich kurz aus

public class Aufgabe3 {
public static void main (String[]arg){
int n;
return f(n);
//f ist public
//static
if (n<3) return 1
else return f(n-1)+f(n-2)
}

}

Ich habe die Frage in keinem anderen Internetforum gestellt.
Fahnder

Bezug
                
Bezug
Berechnung der F_{n}: Antwort
Status: (Antwort) fertig Status 
Datum: 01:06 Di 18.04.2006
Autor: sirprize

Hi,

die Funktion f muss neben der main-Funktion exisitieren. Das ganze sieht also etwa so aus:

public class Aufgabe3 {

  public static void main (String[] args) {
    int zahl = liesEineZahlEin();
    gibAus( f(zahl) );
  }

  public static int f(int n) {
    if (n<3)
      return 1;
    else
      return f(n-1)+f(n-2);
  }

}

Wenn du noch liesEineZahlEin() und gibAus() durch richtige Funktionsaufrufe ersetzt, ist das sogar die komplette Lösung :-)
Verstanden? Hast du jemanden, der dir das ggf. persönlich erklären kann?

Viele Grüße,
Michael

Bezug
        
Bezug
Berechnung der F_{n}: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 07:46 Do 20.04.2006
Autor: Fahnder

Hi,
ich danke euch allen für eure Zeit, mir zu helfen. Habe die volle Punktzahl bekommen.
Fahnder

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]