C++ 如何从我的斐波那契序列中得到要列出的单个数字?
这就是我的任务: 斐波那契数列(0,1,1,2,3,5,8,13,21,…)以0和1开始,并具有以下特性:每个后续斐波那契数是前两个斐波那契数的和 您的任务是使用递归将序列转换为一个程序,该程序将计算到输入整数的斐波那契值 如何获取单个数字并按图2所示的方式列出C++ 如何从我的斐波那契序列中得到要列出的单个数字?,c++,fibonacci,C++,Fibonacci,这就是我的任务: 斐波那契数列(0,1,1,2,3,5,8,13,21,…)以0和1开始,并具有以下特性:每个后续斐波那契数是前两个斐波那契数的和 您的任务是使用递归将序列转换为一个程序,该程序将计算到输入整数的斐波那契值 如何获取单个数字并按图2所示的方式列出 #include <iostream> using namespace std; int fibonacci(int target, int num1, int num2); int main() { int
#include <iostream>
using namespace std;
int fibonacci(int target, int num1, int num2);
int main()
{
int n;
cout << "Know the Fibonacci Sequence up to the nth
term." ;
cout << '\n';
cout << "Input n: ";
cin >> n;
cout << "The sequence up to fibonacci(" << n <<"):";
cout << '\n';
cout << fibonacci(n-1,0,1);
cout << '\n';
return 0;
}
int fibonacci(int target, int num1, int num2)
{
cout << num1 << " ";
if(target == 0)
{
return num1 + num2;
}
else {
fibonacci(target-1, num2, num1 + num2);
}
}
#包括
使用名称空间std;
int fibonacci(int target,int num1,int num2);
int main()
{
int n;
cout当您到达n=0
时,您返回下一个斐波那契数,因为您的加法:
if(目标==0)
{
//给你:
//num1=34
//num2=55
返回num1+num2;
}
要修复它,只需返回num2
当您到达n=0
时,由于您的加法,您将返回下一个斐波那契数:
if(目标==0)
{
//给你:
//num1=34
//num2=55
返回num1+num2;
}
要修复它,只需返回num2
如果您仔细观察了输出,程序打印的最后一个Fibonacci数是89
,它是Fibonacci数列的12
第个数,而不是11
第个数。事实上,您的程序正在打印1
额外的Fibonacci数,然后是需要什么用户已尝试打印。如您所见,您已输入10
作为输入,并且您的程序正在打印11
从0
开始的斐波那契数(其中最后一个不按顺序)
因为您只想打印序列,所以不需要从fibonacci()
函数返回任何东西,因为您在计算递归调用中打印fibonacci序列号
如果要使用序列号打印斐波那契数列(如图2所示),请修改Fibonacci()
函数签名,并添加一个参数,该参数将是当前要打印的斐波那契数列的序列号。检查此项:
#include <iostream>
void fibonacci(int seqNum, int target, int num1, int num2);
int main() {
int n;
std::cout << "Know the Fibonacci Sequence up to the nth term." << std::endl;
std::cout << "Input n: ";
std::cin >> n;
std::cout << "The sequence up to fibonacci(" << n <<"):" << std::endl;
fibonacci(0, n, 0, 1);
std::cout << std::endl;
return 0;
}
void fibonacci(int seqNum, int target, int num1, int num2) {
if (target <= 0) {
return;
}
std::cout << seqNum << ".\t" << num1 << std::endl;
fibonacci(seqNum + 1, target - 1, num2, num1 + num2);
}
上面的程序只是为了向您展示一种获取所需格式输出的方法。请注意,您需要注意无效的用户输入,因为如果用户输入大于或等于48
,则在整数大小为4
字节的平台上,将导致溢出(正如您声明的num1
和num2
为signed int
类型)。我将由您负责用户输入的有效性。此外,如果您只想打印正数斐波那契数,那么将num1
和num2
声明为无符号类型而不是有符号类型是有意义的。如果您仔细观察了输出,则您的程序是89
,这是Fibonacci数列的12
第个数,而不是11
第个数。事实上,您的程序正在打印1
额外的Fibonacci数,然后是要求用户打印的数。如您所见,您已经输入了10
作为输入,并且您的程序正在打印11
Fibonacci nu从0
开始的成员数(其中最后一个不按顺序排列)
因为您只想打印序列,所以不需要从fibonacci()
函数返回任何东西,因为您在计算递归调用中打印fibonacci序列号
如果要使用序列号打印斐波那契数列(如图2所示),请修改Fibonacci()
函数签名,并添加一个参数,该参数将是当前要打印的斐波那契数列的序列号。检查此项:
#include <iostream>
void fibonacci(int seqNum, int target, int num1, int num2);
int main() {
int n;
std::cout << "Know the Fibonacci Sequence up to the nth term." << std::endl;
std::cout << "Input n: ";
std::cin >> n;
std::cout << "The sequence up to fibonacci(" << n <<"):" << std::endl;
fibonacci(0, n, 0, 1);
std::cout << std::endl;
return 0;
}
void fibonacci(int seqNum, int target, int num1, int num2) {
if (target <= 0) {
return;
}
std::cout << seqNum << ".\t" << num1 << std::endl;
fibonacci(seqNum + 1, target - 1, num2, num1 + num2);
}
上面的程序只是为了向您展示一种获取所需格式输出的方法。请注意,您需要注意无效的用户输入,因为如果用户输入大于或等于48
,则在整数大小为4
字节的平台上,将导致溢出(正如您声明的num1
和num2
为signed int
类型)。我将由您负责用户输入的有效性。此外,如果您只想打印正数斐波那契数,那么将num1
和num2
声明为无符号
类型,而不是有符号
类型是有意义的。请将文本作为文本包含在问题中。请不要输入您忘记返回递归中的值,这会导致以后尝试使用时出现未定义的行为。在不相关的注释中,数字和数字不是一回事。请将文本作为文本包含在问题中。请不要提示您忘记返回递归中的值,这会导致以后尝试使用时出现未定义的行为注意,数字和数字不是一回事。