首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fibonacci级数

Fibonacci级数
EN

Stack Overflow用户
提问于 2015-03-31 16:11:06
回答 5查看 1.2K关注 0票数 2

我试着用斐波纳契系列来做一个练习。我必须用递归函数来实现Fibonacci的素数n的继承,并在相同的函数中打印它们。问题是我的函数也打印中间号。例如,对于n = 6,结果应该是:1 1 2 3 5 8。有什么解决办法吗?

谢谢

代码语言:javascript
复制
#include<iostream>
using namespace std;
int rec(int n)
{
    int a, b;
    if (n == 0 || n == 1)
    {
        return n;
    }
    else
    {
        a = rec(n - 1);
        b = rec(n - 2);
        cout << a + b << endl;
        return a + b;
    }

}
int main()
{ 
    int n = 6;
    rec(n);
    return 0;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-31 18:22:16

你可以用这个:

代码语言:javascript
复制
#include<iostream>
using namespace std;
#define MAXN 100
int visited[MAXN];
int rec(int n)
{
    if(visited[n])
    {
        return visited[n];
    }
    int a, b;
    if (n == 0|| n==1)
    {
        return n;
    }
    else
    {
        a = rec(n - 1);
        b = rec(n - 2);
        cout << " " <<a + b;
        return visited[n] = a + b;
    }

}
int main()
{
    int n = 6;
    cout<< "1";
    rec(n);
    cout<<endl;
    return 0;
}

该实现使用动态编程。因此,它减少了计算时间:)

票数 1
EN

Stack Overflow用户

发布于 2015-03-31 16:42:23

我接受了static int的帮助。那是你想要的效果。

代码语言:javascript
复制
void rec(int n)
{
    static int a=0,b=1,sum;
    if(n>0)
    {
         sum = a+b;
         a=b;
         b= sum;
         cout<<sum<<" ";
         rec(n-1);
    }
}

尽管您必须在main()中自己打印第一个斐波纳契数字。

代码语言:javascript
复制
cout<<"0 ";
rec(n);
票数 2
EN

Stack Overflow用户

发布于 2015-03-31 17:03:20

因为您是在rec中打印,所以它的多次打印是因为递归。不需要在递归函数中打印。相反,在main中打印结果

代码语言:javascript
复制
#include<iostream>
using namespace std;
int rec(int n)
{
    int a, b;
    if (n == 0 || n == 1)
    {
        return n;
    }
    else
    {
        a = rec(n - 1);
        b = rec(n - 2);
        //cout << a + b << endl;
        return a + b;
    }
}

int main()
{
    int n = 6;

    for (int i = 1; i <= n; i++)
    {
        cout << rec(i) << endl;
    }

    system("pause");
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29373343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档