условие цикла для вывода Фибоначчи

0

Я пытаюсь понять, как я могу установить условный оператор в цикле while, который приведет к вводу пользователем нужного номера фибоначчи и вычисляет соответствующее число фидов. Входы пользователя 8 и программные выходы 34. Будет оценен любой намек, который может указать мне в правильном направлении или помочь мне увидеть проблему под другим углом.

#include <iostream>
using namespace std;

int main ()
{
    bool exit;
    int fib;
    int fib1 = 1;
    int fib2 = 2;
    int fib3 = 0;

    cout << "The first Fibonacci number is 1" << endl;
    cout << "The second Fibonacci number is 2" << endl;
    cout << "what other Fibonacci number would you like? Enter -888 to exit: ";
    cin >> fib;

    while(fib ) //condition that makes sure output is the fibonacci the user is looking for
    {
        fib3 = (fib1+fib2);
        fib1 = fib2;
        fib2 = fib3;

        cout << "...and the Fibonnaci is..... " << fib << endl;
    }
    if(fib == -888)
    {
        exit = true;
    }

    return 0;
}
  • 0
    Вы скомпилировали и запустили программу? Как ведет себя, когда вы вводите 1 ? А за -888 ? Компилятор дал вам какие-либо предупреждения?
  • 0
    Я сделал компиляцию, когда я ввел 1, он работает бесконечно. Я не смог придумать условие, которое работает. для -888 есть предупреждение о том, что код никогда не будет выполнен, я использовал его как заполнитель для того, как я мог заставить пользователя выйти из цикла после того, как они закончили с запросом числа фиб.
Показать ещё 1 комментарий
Теги:
fibonacci

1 ответ

1
Лучший ответ

Два возможных ответа.

Одним из них является вычисление числа Фибоначчи с использованием решения закрытой формы, которое является \frac {(\ frac {1 +\sqrt {5}} {2}) ^ n - (\ frac {1 -\sqrt {5}} { 2}) ^ п} {\ SQRT {5}}.

Другим является использование структуры цикла, как вы это делаете. Я не хочу отвечать на этот вопрос, но вам нужна переменная-счетчик в вашей структуре цикла. Запустите его в 1 и подсчитайте до тех пор, пока не достигнете желаемой итерации числа фибоначчи.

Что-то вроде

i = 1;
while(i < n)
{
    i++;
    //code
}
  • 0
    Вы можете пойти на счетчик.
  • 0
    Решение в закрытой форме не работает с арифметикой с плавающей запятой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню