2015-03-31 70 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 2015-03-31 00:07:44

+4

你的'input()'函数不应该返回'number',而不是0吗? – 2015-03-31 00:07:57

回答

3

input函数返回零。你想返回number。此外,while循环应运行,直到输入的数字大于零(我认为这是你的意图)。

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

此外,您可能希望消息说“输入一个大于零的位置:”。因此,用户不会尝试使用<= 0的数字。 – DigitalNinja 2015-03-31 00:15:08

+0

如果输入失败,它也需要退出(例如,用户键入单词),否则这是一个无限循环。例如,循环可以包含'if(!cin)return 0;' – 2015-03-31 00:45:28