|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#define MAX 1000000
#define K 32767
unsigned long long int array[MAX+1];// 记忆递归
unsigned long long int f(int num)
{
if(array[num]!=0)//归时调用记忆
return array[num];
else if(num==1)
return 1;
else if(num==2)
return 2;
return array[num]=((2*f(num-1)%K)+(f(num-2)%K));//递时生成记忆
}
int main(void)
{
int n,num;
scanf("%d",&n);
while(n--)
{
scanf("%d",&num);
printf("%lld\n",f(num));
}
return 0;
}
代码如上,在num规模较小时答案正确,但是测试输入大概num>100后,输出结果有误
比如我输入100返回27500,输入1000,10000结果都是27500
我输入101返回43933,输入1001,10001结果返回都是43933
规模更大的num程序无法返回结果
接触递归不久,希望大神们不吝赐教,万分感谢!!! |
|