Diskuze: Fibonacciho čísla

C++ C a C++ Fibonacciho čísla

Avatar
laney10
Člen
Avatar
laney10:

Ahojte,
Mohl by mi někdo vysvětlit tento zdroják?

#include <iostream>
#include <cstdio>

using namespace std;

 int fibonacci(int i)
 {
    int c1 = 0;
        int c2 = 1;
        int vysledek = 0;

    for (int j = 1; j < i; j++)
    {
        vysledek = c1 + c2;
        c1 = c2;
        c2 = vysledek;
    }
    return vysledek;
}
int main()
{
    int i = 2;
    static char vstup;
    cout << "Fibonacciho posloupnost zacina cisly 1,1,2" << endl;

        while(vstup != 'n')
        {
        if(i > 3)
        {
            cout << "Zobrazit dalsi? [cokoliv/n]" << endl;
            vstup = getchar();

                        if(vstup != '\n')
            {
                getchar();
            }
                        if(vstup == 'n')
                {
                                        return 0;
                            }
            cout << "Dalsi cislo Fibonacciho posloupnosti je: " << fibonacci(i) << endl;
        }
        i++;
                }
    return 0;
}
 
Odpovědět 9.10.2014 16:49
Avatar
Lukáš Křehula
Redaktor
Avatar
Lukáš Křehula:

Fibonacciho posloupnost je vlastně posloupnost přirozených čísel a každé to číslo je součet dvouch předchozích.. první 3 čísla jsou daný (0, 1, 1), další číslo tedy bude 2, protože 1+1 = 2; (0,1,1,2), další bude 1+2 = 3, etc.

Tento program ti bude vypisovat ty čísla hezky popořadě, dokud budeš zadávat 'n'

 
Nahoru Odpovědět 9.10.2014 17:13
Avatar
Neaktivní uživatel:

len taká drobnosť, fibbonaciho postupnosť má jednu zaujímavú vlastnosť a to, že podiel ľubovoľných posledných dvoch členov sa limitne blíži k zlatému rezu a samotná postupnosť vychádza aj z Pascalovho trojuholníka :)

Nahoru Odpovědět 9.10.2014 17:19
Neaktivní uživatelský účet
Avatar
laney10
Člen
Avatar
Odpovídá na laney10
laney10:

Jsem zvolil špatnou otázku.
Potřeboval bych ten zdroják okomentovat abych ho pochopil.

 
Nahoru Odpovědět 9.10.2014 17:27
Avatar
Odpovídá na laney10
Neaktivní uživatel:
#include <iostream>
#include <cstdio>

using namespace std;

int getFibonacciNumber(int positionOfNumber) {
     int firstNumberInSequence = 0;
     int secondNumberInSequence = 1;
     int nextNumberInSequence = 0;

     for (int i = 1; i < positionOfNumber; i++) {
         nextNumberInSequence = firstNumberInSequence + secondNumberInSequence;
         firstNumberInSequence = secondNumberInSequence;
         secondNumberInSequence = nextNumberInSequence;
     }

     return nextNumberInSequence;
 }

 int main() {
    int positionOfNextNumber = 2;
    static char userInput;

    cout << "Fibonacciho posloupnost zacina cisly 1,1,2" << endl;

    while(userInput != 'n') {
                if(positionOfNextNumber > 3) {
                        cout << "Zobrazit dalsi? [cokoliv/n]" << endl;
                        userInput = getchar();

                        if(userInput != '\n') {
                 getchar();
            }

            if(userInput == 'n') {
                                break;
            }

            cout << "Dalsi cislo Fibonacciho posloupnosti je: " << getFibonacciNumber(positionOfNextNumber) << endl;
        }
                positionOfNextNumber++;
    }
        return 0;
 }

prepísal som ten kód trošičku, ak vieš anglicky a trochu rozumieš cyklom a podmienkam, mal by si pochopiť čo to robí :)

Nahoru Odpovědět 9.10.2014 19:34
Neaktivní uživatelský účet
Avatar
laney10
Člen
Avatar
Odpovídá na Neaktivní uživatel
laney10:

Díííííííííky mooooooooc, už chápu :-D

 
Nahoru Odpovědět 9.10.2014 19:42
Avatar
Odpovídá na laney10
Neaktivní uživatel:

ide to aj bez komentárov, stačí písať trochu čitateľnejšie programy :) predstav si taký kód ako si sem dal v nejakom veľkom projekte... no môžem ti povedať, že na 100% by s tým nikto nechcel pracovať, pretože kým by prišiel na to čo to robí a čo je "i" a iné, tak by asi stratil nervy :D a dobrý kód nepotrebuje komentáre, komentáre sú často zavádzajúce a nepresné

Nahoru Odpovědět 9.10.2014 19:52
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.