问题描述
#include <stdio.h>
#include<stdlib.h>
int memo[100];
下面是使用记事的功能。
我正在尝试将冗余递归调用的返回值存储在第n个位置的memo [n]数组中。
int rec(int n){
if(n<=2)
return 0;
if(memo[n]!= -1)
return memo[n];
memo[n]= rec(n-2)+(n/2)-1;
printf("%d",memo[n]);
return memo[n];
}
下面是main()函数。 我已将memo []数组的所有值初始化为-1。
void main(){
int n,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n%2!=0)
n=n-1;
for(int i=0;i<n;i++){
memo[i]= -1;
}
printf("\n%d",rec(n));
}
}
解决方法
我已将memo []数组的所有值初始化为-1。
不,您没有。循环for(int i=0;i<n;i++)
不会初始化memo[n]
。