【发布时间】:2016-05-26 20:30:57
【问题描述】:
#include<bits/stdc++.h>
#define big 1000000007
using namespace std;
long long n,k;
int fobo(int);
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
k=fobo(n)%big;
printf("%d",k);
printf("\n");
}
return 0;
}
int fobo(int m)
{
if(m==1)
return 0;
if(m==2)
return 1;
return 3*fobo(m-1)+2*fobo(m-2)+5;
}
上面的代码用于打印一种特殊类型的斐波那契数列的总和,遵循函数fobo 内的递归关系中给出的关系。该代码在我的机器上运行良好,但在任何在线法官的测试中,相同的代码显示 SIGSEGV 错误。程序中没有使用任何数组,访问我知道的未知内存。我想这些是出现 SIGSEGV 错误的一些主要要求。我在这里找不到任何东西。请帮助我解决或查找错误。
【问题讨论】:
-
hobo(n)是fobo? -
#include<bits/stdc++.h>aaaaaaaaarrrrrrrrrrrggggggggggghhhhhhhhhhhhh -
long long n,k; /* ... */ scanf("%d",&n);为什么是long long? -
从技术上讲,它不是斐波那契数列,而是具有递归关系的数列。斐波那契特指序列 0, 1, 1, 2, 3, 5, 8, 13, ... 其中 a[n] = a[n-1] + a[n-2];甚至卢卡斯数列(2、1、3、4、7、11、18,...)也不是斐波那契数列,因为它使用不同的起始数字。
-
它在某些国家的竞争性节目中非常受欢迎,它让我发疯。原因如下:stackoverflow.com/q/31816095/560648
标签: c++ recursion fibonacci segmentation-fault