laserlight下载:请帮我看看这个递归函数的返回值为什么不对呢(ASP)

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 16:11:19
<% function test(num)
n=num
x=fix(log(n)/log(2))
y=n-2^x
if y<>0 then
l=fix(x/3)+1
h=(x mod 3)+1
Q=Q&l&chr(44)&h&chr(124)
test(y)
else
l=fix(x/3)+1
h=(x mod 3)+1
Q=Q&l&chr(44)&h&chr(124)
end if
test=Q
end function %>

这个函数的功能是实现将输入值还原成若干个2的倍数数字相加,并以字符串的形式返回对应行和列的值
以输入值73为例,返回值应当为:1,1|2,1|3,1|
但是本函数结果返回的是:3,1|
我测试过Q的值确实是1,1|2,1|3,1|没错,但是test=Q之后再检测test的值就不对了。为什么传递给函数的返回值却少了前面的数字呢?函数应该怎么修改才正确?

变量的定义有问题,在函数外面加上Dim Q 应该就没问题了。
<% Dim Q
function test(num)
...