为什么我用c写的回忆录代码不起作用? #包括 #包括 国际备忘录[100];

为什么我用c写的回忆录代码不起作用? #包括 #包括 国际备忘录[100];,c,recursion,memoization,C,Recursion,Memoization,下面是使用记忆的功能 我试图将redundent递归调用的返回值存储在memo[n]数组的第n个位置 #include <stdio.h> #include<stdlib.h> int memo[100]; int rec(int n){ 如果(n) 我已将memo[]数组的所有值初始化为-1 int rec(int n){ if(n<=2) return 0; if(memo[n]!= -1) retu

下面是使用记忆的功能

我试图将redundent递归调用的返回值存储在memo[n]数组的第n个位置

#include <stdio.h>
#include<stdlib.h>

int memo[100];
int rec(int n){
如果(n)
我已将memo[]数组的所有值初始化为-1

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];
}

不,您没有。for(inti=0;iYes)的循环
,您是对的。现在它已解决。Thanx寻求帮助。
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));
    }

}