Ciąg fibonacciego

Ciąg fibonacciego
IG
  • Rejestracja:prawie 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:2
0

Mam za zadanie napisać program z ciągiem fibonacciego, który po wyświetleniu wskazanej liczby n wyświetli potem za pomocą pętli liczby z ciagu fibonacciego poprzedzające liczbę n. Na razie mam tyle, co poniżej. Czy ktoś byłby w stanie pomóc mi z tą pętlą?

Kopiuj
int fib(int n)
{ if(n==0) return 0;
 if(n==1) return 1;
return fib(n-1)+ fib(n-2); }
int main () {
   int n;
    cout<<"Podaj numer wyrazu ciagu : ";
    cin>>n;
    cout<< fib(n)<<endl;
        for (int i = fib(1); i <= fib(n); ++i)
        {
        cout << i << " ";
    }
edytowany 1x, ostatnio: Riddle
BD
  • Rejestracja:około 2 lata
  • Ostatnio:około rok
  • Postów:21
1

Jeśli dobrze zrozumiałem co chciałaś osiągnąć to poprawione, proszę (;

Kopiuj
#include <iostream>

using namespace std;

int fib(int n){ 
    if(n==0) return 0;
    if(n==1) return 1;
    return fib(n-1)+ fib(n-2); 
}
int main () {
    int n;
    cout<<"Podaj numer wyrazu ciagu : ";
    cin>>n;
    cout<<"Liczby z ciagu fibonacciego mniejsze od: "<<n<<endl;
    for(int i = 0; fib(i)<n; i++){
        cout << fib(i) << " ";
    }
}

P.S.
Kod wrzucamy w pole do tego przeznaczone, do wyboru z górnej części po prawej.

edytowany 3x, ostatnio: ByleDoPrzodu
Zobacz pozostałe 7 komentarzy
BD
Tak jak mówiłem, jedynie co się wyświetli to cout przed pętlą: Liczby z ciagu fibonacciego mniejsze od: -1, jeśli by się chciało uniknąć tego to wrzucamy if sprawdzającego lub unsigned int zamiast int. Ale nie rozumiem o co tyle szumu, można zawsze zrobić program idiotoodporny i go przez to komplikować, ale nie myślę by dla osoby który robi tak podstawowy program, było potrzebne teraz zabezpieczanie się przed takimi wypadkami. Równie dobrze program powinien przyjąć A i napisać że to nie liczba (; . Nie wiem po co od razu tak offensive
_13th_Dragon
Wystarczy uprościć lub przyśpieszyć i nie ma problemu.
enedil
Z czym masz problem @_13th_Dragon ? Przecież poprawnie wypisuje listę wszystkich liczb Fibonacciego mniejszych niż -1
_13th_Dragon
Zacznijmy od podwójnego wyliczenia fib(i) metodą rekurencyjną. Dalej sama fib() niepoprawnie interpretującą liczby ujemne. W sumie do tego kodu jest więcej zarzutów niż w nim jest wierszy!
BD
Nie rozumiem nawet z czym masz problem. Funkcja nie uruchomi się w tym kodzie dla liczb ujemnych nie ma takiej możliwości gdy pętla się zaczyna od 0. Podwójne wyliczenie metodą rekurencyjną. Jaki problem z tym. Nie jest to szybkie ale przynajmniej proste do zrozumienia. Jeśli chodzi Ci o szybkość działania tego programu. No to oczywiście, najszybszym rozwiązaniem dla fibonacciego jest iteracja a nie rekurencja i lepiej by bylo dla tego wypadku wypisywać w funkcji kolejne wyrazy. Ale nie chodzi tu by cały kod wywrócić do góry nogami, a by jedynie osobie pomoc naprawić. (:
IG
  • Rejestracja:prawie 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:2
0
ByleDoPrzodu napisał(a):

Jeśli dobrze zrozumiałem co chciałaś osiągnąć to poprawione, proszę (;

Kopiuj
#include <iostream>

using namespace std;

int fib(int n){ 
    if(n==0) return 0;
    if(n==1) return 1;
    return fib(n-1)+ fib(n-2); 
}
int main () {
    int n;
    cout<<"Podaj numer wyrazu ciagu : ";
    cin>>n;
    cout<<"Liczby z ciagu fibonacciego mniejsze od: "<<n<<endl;
    for(int i = 0; fib(i)<n; i++){
        cout << fib(i) << " ";
    }
}

P.S.
Kod wrzucamy w pole do tego przeznaczone, do wyboru z górnej części po prawej.

Bardzo dziękuję za odpowiedź, o to dokładnie mi chodziło.
Będę pamietac na następny raz :)

BD
  • Rejestracja:około 2 lata
  • Ostatnio:około rok
  • Postów:21
1

Zaznacz taki ptaszek koło kciuka żeby odpowiedz była uznana

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.