如何解决为什么我用c编写的记忆代码无法正常工作?
#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));
}
}
输出为0(零)。 我无法找出这段代码出了什么问题。请帮忙!
解决方法
我已将memo []数组的所有值初始化为-1。
不,您没有。循环for(int i=0;i<n;i++)
不会初始化memo[n]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。