Formel von Binet

Dr.Ohm

Mitglied
Hi Leute,

ich hab ein kleines Problem mit der Implementierung der Formel von Binet, zur Bestimmung der Fibonacci-Zahlen.
Ich habe es schon einige male ausprobiert, allerdings erhalte ich schon beim compilieren Errors....
Wäre cool wenn ihr mir helfen könntet.
Danke,

Dr.Ohm
 
helfen gerne, poste einfach mal deinen code und wir schauen uns an, wo du fehler machst.
 
Cool, ich hab die folgende Methode, die mir dann die Fibonacci-Zahl liefern soll:
Java:
public int binet(int n)
    {
        return ((1/Math.sqrt(5))*((((Math.pow((1+Math.sqrt(5))/2))), n)-(Math.pow((1-Math.sqrt(5))/2),n)));
    }

ich habe wahrscheinlich ne klammer zu wenig oder zu viel oder so, ich habs auf jedenfall schon zu oft durchgeguckt ....
 
Java:
public int binet(int n)
{
    return (int) ( (1/Math.sqrt(5)) * ( ( Math.pow(1+Math.sqrt(5)/2, n)) - (Math.pow(1-Math.sqrt(5)/2,n))) );
}

...soviele Klammern oO. Habe das jz mal entwurstelt. Selbst mit IDE kaum noch zu überblicken, soetwas würde ich vllt erstmal in Variablen auslagern:

Java:
double a	= 1/Math.sqrt(5);
double b	= Math.pow(1+Math.sqrt(5)/2, n);
double c	= Math.pow(1-Math.sqrt(5)/2, n);
		
return (int) ( a * ( b - c) );

macht die ganze Sache einfacher zu lesen ;-)
 
überlege dir ein Beispiel, ein n, rechne es auf Papier durch,

dann schaue dir in Java nicht das Endergebnis von
> ((1/Math.sqrt(5))*((((Math.pow((1+Math.sqrt(5))/2))), n)-(Math.pow((1-Math.sqrt(5))/2),n)));
an,
sondern von Zwischenschritten wie
> Math.pow((1+Math.sqrt(5))/2)
verglichen mit den Zwischenergebnissen auf Papier

---
man darf auch nach dem Testen wirklich noch Zwischenergebnisse im Programm programmieren:

> double x = Math.pow((1+Math.sqrt(5))/2);
> double y = fglfglgjld
> double z = x+y/3; dfgfifd
> return z;
 
Du musst es ja nicht gleich so verschachteln:
Java:
public static int binet(int n)
{
	double a = 1/Math.sqrt(5);
	double b = (1+Math.sqrt(5))/2.0;
	double c = (1-Math.sqrt(5))/2.0;
	double d = Math.pow(b, n);
	double e = Math.pow(c, n);
	
    return (int) (a*(d-e));
}
Wenn das läuft kannst du ja auch Schritt für Schritt eine Formel daraus machen (wenn überhaupt)
 

Neue Themen


Zurück
Oben