我曾经使用过Elk Scheme 解释器相当长一段时间,并且有时会查看其源代码。
我注意到它在 symbol.c 中包含了以下哈希函数:
int Hash (char const *str, unsigned int len) {
register int h;
register char const *p, *ep;
h = 5 * len;
if (len > 5)
len = 5;
for (p = str, ep = p+len; p < ep; ++p)
h = (h << 2) ^ *p;
return h & 017777777777;
}
源代码中没有描述这个函数的内容。
这个哈希函数有一个名称吗?
这个哈希方案在某个地方有文档记录吗?
h = Hash(str, len) % OBARRAY_SIZE;
其中h
的类型为int
。h
用作数组的索引。 - R Sahu