Hausaufgabe

05/07/2012 15:13 cLx.##1
Hallo,
ich muss als Hausaufgabe ein C++ Programm schreiben aber es will nicht so wie ich will.
Vielleicht kann mit jemand helfen hier ist die Aufgaben Stellung :

Code:
Schreibe eine Funktion istFibonacci(), die den Rückgabewert true zurückgibt, falls die ihr übergebene positive ganze Zahl eine Fibanoccizahl ist. Im anderen Fall wird false zurückgegeben,
Hier die Definition für Fibonaccizahlen:
Erste Fibonaccizahl ist 0
Zweite Fibonaccizahl ist 1
Jede folgende Fibonaccizahl ist die Summe ihrer beiden Vorgänger-Fibonaccizahlen. Hier die Zahlenreihe:
0,1,1,2,3,5,8,13,21…….
Teste deine Funktion innerhalb einer angemessenen main-Methode. Diese ermöglicht die Eingabe von bis zu 5 Zahlen die danach auf ihre Fibonaccieigenschaft geprüft werden.
05/07/2012 15:25 °Remus°#2
Quote:
Originally Posted by cLx.# View Post
...
aber es will nicht so wie ich will.
...
wie sieht denn dein jetziger Lösungsansatz aus?
ich würd einfach solange die nächsthöhere Fibonaccizahl (mit 0 und 1 beginnend) berechnen bis sie entweder gleich (return true) oder größer (return false) ist.
05/07/2012 15:29 マルコ#3
ungetestet:
Code:
bool fibo(int num)
{
  if(num == 0 || num == 1)
    return true;
  int f1,f2,fib;
  f1 = 0;
  f2 = 1;
  fib = 1;
  while(fib < num)
  {
    fib = f1 + f2;
    f1 = f2;
    f2 = fib;
  }
  if(fib == num)
    return true;
  return false;  
}
05/07/2012 22:23 xNopex#4
Schau dir mal die Formel von Binet an. Damit kannst dus (v.a. bei sehr großen zahlen) effizienter berechnen. Btw. sind die Fibonacci-Zahlen ein Paradebeispiel für Rekursion. Es gibt daher auch eine rekursive Lösung, aber die iterative sei in diesem Fall vorzuziehen, da sie zum einen schneller ist und zum andere läufst du nicht Gefahr nen Stack Overflow zu verursachen.