| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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程序无法返回结果 
接触递归不久,希望大神们不吝赐教,万分感谢!!! |   
 
 
 
 |