2015-03-31 2 views
-2

Итак, я делаю проект, который делает функцию, чтобы получить n-й номер последовательности фибоначчи. Я не думаю, что есть какая-либо ошибка, но я не удовлетворен результатами, и я не могу это исправить.Программа всегда выводит 0

Ошибки: - При вводе номер консоль возвращает 0

#include <cmath> 

using namespace std; 

int input(string msg) 
{ 
    int number = 0; 
    while(number >= 0) 
    { 
    cin >> number; 
    return 0; 
    } 
    return 0; 
} 

int fib(int n) 
{ 
    if (n == 0) return 0; 
    if (n == 1) return 1; 

    return fib(n-1) + fib(n-2); 
} 

int main() 
{ 

int fibonacci = input("Input a position"); 

int fibber = fib(fibonacci); 

cout << fibber; 


return 0; 
} 
+3

Пройти через отладчик. – chris

+4

Должна ли ваша функция 'input()' возвращать 'номер', а не 0? –

ответ

3

Ваш input функция возвращает нулевое значение. Вы хотите вернуть number. Также цикл while должен работать до тех пор, пока введенный номер больше нуля (я думаю, что это были ваши намерения).

int input(string msg) 
{ 
    int number = 0; 
    while(number <= 0) 
    { 
     cout << msg; 
     cin >> number; 
    } 
    return number; 
} 
+0

Кроме того, вы можете захотеть, чтобы сообщение произнесло что-то вроде «Введите позицию, которая больше нуля:». Таким образом, пользователь не пытается пробовать числа <= 0. – DigitalNinja

+0

Также ему необходимо выйти, если вход не сработает (например, пользовательские типы в словах), иначе это бесконечный цикл. Например, цикл может содержать 'if (! Cin) return 0;' –

Смежные вопросы