在 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 即可享受。递归是一个很难的概念,但是一旦你有了这个想法,它就可以非常有效地执行,但在我看来它非常有限。
我试图通过使用此命令 "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 即可享受。递归是一个很难的概念,但是一旦你有了这个想法,它就可以非常有效地执行,但在我看来它非常有限。