【发布时间】:2013-10-25 22:50:27
【问题描述】:
对于某些情况下较大的 j 函数,下面的哈希函数返回负值。
int hashing::hash(string a)
{
int i = 0;
int hvalue = 0;
int h =0 ;
while(a[i]!=NULL)
{
hvalue = hvalue + (int(a[i]))*pow(31,i);
i++;
}
h = hvalue%j;
return h;
}
这怎么可能?我该如何纠正?
在上面的代码中,j 是一个使用文件大小计算的素数。负值出现在字符串具有“s”形式的某些特定情况下。
我做错了什么?我该如何解决?
【问题讨论】: