在 C++ 中斐波那契打印问题

fibonacci print out issue in c++

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

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

我已将 link 附加到下面的 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;

}

这是一个例子。像斐波那契这样的问题最好用递归来处理。我看到你在 do while 循环中尝试使用某种递归,但它并没有真正起作用

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

    if (x == 1)
        return 1;

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

这基本上完成了您在 main 中输入的所有内容,只需提供 x 即可享受。递归是一个很难的概念,但是一旦你有了这个想法,它就可以非常有效地执行,但在我看来它非常有限。