當我通過「冰」時,這應該返回451845518507,但它返回873,952,427任何人都可以告訴我爲什麼? (MAX_STR_SIZE = 501)遞歸的哈希碼?
unsigned long hash_code(const char *str){
char temp[MAX_STR_SIZE]="";
unsigned long multiplied;
if(str == NULL){
return SUCCESS;
}
else if(strlen(str)==0 || str==""){
return SUCCESS;
}
else{
strncpy(temp,str, strlen(str)-1);
temp[strlen(str)-1]=0;
multiplied = (hash_code(temp)*65599 + (int) str[strlen(str)-1]);
return multiplied;
}
}
混合'SUCCESS'和散列值看起來很可疑。 – AlexD
SUCCESS只是零的符號 – Jenny
使用'* str =='\ 0''而不是'str =='「' –