fibonacci在c ++中打印出问题

时间:2015-01-24 08:29:26

标签: c++ fibonacci

我试图通过使用此命令“fib 12”来运行fib.exe,因此它可以直接以这种格式打印出结果: http://pastebin.com/ytR92i8f

但是编译我的代码,例如,如果我使用12来测试我的程序,它不会读取任何数字并在此命令“fib xx”中显示结果但是它将运行程序并让你输入你想要在下一行编号,然后打印出结果......

我已将链接附加到我的main.cpp下面作为参考。

main.cpp:http://pastebin.com/fhUAkNQR

因为main.c无法修改所以我只能使用一个函数来使它工作。 现在我已经有了正确的结果。

void fibonacci(int max)
{

do
{
  std::cin >> max;
} 
while(max < 2 && max > 46);  

std::cout << "           Fibonacci        Fibonacci" << std::endl;
std::cout << " N           number          quotient" << std::endl;
std::cout << "-------------------------------------" << std::endl;
std::cout << " 0             0                  N/A" << std::endl;
std::cout << " 1             1                  N/A" << std::endl;

int count = max;
int fib1 = 0, fib2 = 1;

for (int i = 2; i <= count; i++)
{
  int next = fib1 + fib2;

  // Add statements to print here...
  std::cout << std::setw(2) << i;
  std::cout << std::setw(14) << next;
  std::cout << std::setw(21) << std::setprecision(17) << std::showpoint;
  std::cout << static_cast<double>(next) / fib2 << std::endl;
  std::cout.unsetf(std::ios_base::showpoint);

  fib1 = fib2;
  fib2 = next;
}


return;

}

1 个答案:

答案 0 :(得分:0)

这里和例子。像Fibonacci这样的问题可以更好地处理递归。我看到你用do while循环尝试使用某种递归,但它并没有真正起作用

int fibonacci(int x)
{
    if (x == 0)
        return 0;

    if (x == 1)
        return 1;

    return fibonacci(x-1)+fib(x-2);
}

这基本上都是你在主要内容中键入的内容,只需提供x并享受。递归是一个困难的概念,但是一旦你有了这个想法就可以非常有效地进行预测,但在我看来它非常有限。