Я пытаюсь понять, как я могу установить условный оператор в цикле 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;
}
Два возможных ответа.
Одним из них является вычисление числа Фибоначчи с использованием решения закрытой формы, которое является \frac {(\ frac {1 +\sqrt {5}} {2}) ^ n - (\ frac {1 -\sqrt {5}} { 2}) ^ п} {\ SQRT {5}}.
Другим является использование структуры цикла, как вы это делаете. Я не хочу отвечать на этот вопрос, но вам нужна переменная-счетчик в вашей структуре цикла. Запустите его в 1 и подсчитайте до тех пор, пока не достигнете желаемой итерации числа фибоначчи.
Что-то вроде
i = 1;
while(i < n)
{
i++;
//code
}
1
? А за-888
? Компилятор дал вам какие-либо предупреждения?