【发布时间】:2020-08-22 13:45:00
【问题描述】:
#include <stdio.h>
#include<stdlib.h>
int memo[100];
下面是使用memoization的函数。
我正在尝试将冗余递归调用的返回值存储在第 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));
}
}
输出为 0(零)。 我无法找出这段代码有什么问题。请帮忙!
【问题讨论】:
标签: c recursion memoization