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

fibonacci print out issue in c++

本文关键字:打印 问题 C++      更新时间:2023-10-16

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

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

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

主要.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);
}

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