逻辑在哪里错了?

sta*_*ion -1 c algorithm

我写了memoized一个用C计算数字因子的代码.但是在提供输入时n=3它会将输出视为6! = 134513904.可以请某人解释出现了什么问题?

int fact(int n)
{
int temp;
static int lookup_table[100];
if(lookup_table[n])
    return lookup_table[n]; 
else if(n == 0 )
{
    lookup_table[0]= 1;
    return 1;
}   
else
{
    temp = n * fact(n-1);
    lookup_table[n] = temp;
    return temp;
}

}
Run Code Online (Sandbox Code Playgroud)

cob*_*bal 5

一个问题可能是你没有初始化你的表,所以它充满了内存中发生的任何事情.

编辑:啊,看来我错了,行为定义得很好:

如果没有显式初始化具有静态存储持续时间的对象,则会隐式初始化它,就好像每个具有算术类型的成员都被赋值为0,并且每个具有指针类型的成员都被赋予空指针常量.

资源