C++ liczby fibonacciego

0

Próbuję zastosować ten algorytm w c++
http://www.algorytm.org/images/schematy_blokowe/fibonacci_rek.gif

Czemu nie działa? Przy wprowadzeniu np 4 dostaje result 111-538954624-538954624

using namespace std;

int fib(int n)
{
  int wynik;

  if (n <= 2)
  {
    wynik = 1;
    cout << wynik;
  }
  else
  {
    wynik = fib(n - 2) + fib(n - 1);
    cout << wynik;
  }
}

int main()
{
  int n;
  cin >> n;

  fib(n);
}

jeszcze jedno pytanie

czy się czymś różni ten zapis? if(k!=0) a if(!(k=0))

2

Powinieneś zwracać wynik, a nie drukować.

0

TUTAJ możesz poczytać o rekurencji, jest tam też poprawnie napisany kod, który próbowałeś napisać (tak jak wyżej kolega napisał - zwracając wartość, a nie ją drukując na ekranie). Gdybyś potrzebował czegoś po polsku, to też sporo materiałów znajdziesz

1

Co do drugiego pytania:

czy się czymś różni ten zapis? if(k!=0) a if(!(k=0))

ten po prawej nie będzie działać poprawnie, ponieważ robisz operację przypisania zamiast porównania. Być może te zapis miał wyglądać tak:

 if(!(k==0))

W tym przypadku jest on poprawny, ale zauważ, że masz do przeczytania o jedną operację więcej: porówanie oraz negacja, a w tym lewym podejściu masz jedną operację sprawdzenia nierówności

1
_dominik napisał(a):

Co do drugiego pytania:

czy się czymś różni ten zapis? if(k!=0) a if(!(k=0))

ten po prawej nie będzie działać poprawnie, ponieważ robisz operację przypisania zamiast porównania. Być może te zapis miał wyglądać tak:

Będzie działać poprawnie, tylko że nie tak jak oczekuje autor.

if(!(k=0)) // wpisujemy do k wartość 0, po czym tą wartość negujemy otrzymując prawdę więc warunek tego `if'a` zawsze będzie prawdziwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1