C++ 如何从我的斐波那契序列中得到要列出的单个数字?

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

这就是我的任务:

斐波那契数列(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 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
声明为
无符号
类型,而不是
有符号
类型是有意义的。

请将文本作为文本包含在问题中。请不要输入您忘记返回递归中的值,这会导致以后尝试使用时出现未定义的行为。在不相关的注释中,数字和数字不是一回事。请将文本作为文本包含在问题中。请不要提示您忘记返回递归中的值,这会导致以后尝试使用时出现未定义的行为注意,数字和数字不是一回事。