asp 运行产生堆栈溢出的问题,如何解决?
我在页面里面运行了一个读取随机数的的递归程序。
运行产生了一个堆栈错误。这个错误应该如何解决? 还有产生的原因是什么,要怎么避免。
我的程序大概是这样的。
exam=rse.fields("exam_question") '读取考试题目,存储类似于1|2|3|4|5|6|这样的形式
total_num=rse.fields("exam_mark")
exam=split(exam,"|")
question="|"
mark=0
AI="|"
ssQ=rse.fields("ssQ") '读取题目数量
smQ=rse.fields("smQ")
ynQ=rse.fields("ynQ")
lsQ=rse.fields("lsq")
makeMark ssq,smq,ynq,lsq '开始计算
sub makeMark(ssQ,smQ,ynQ,lsQ) 'ss 单选题目数量,sm,多选题目数量,yn,判断题目数量 ls,论述题
if smnum+ssnum+ynnum+lsnum = ssq + smq+ynQ+lsQ then exit sub '题目数量达到指定数量,退出
randomize
i = cint(rnd(ubound(exam))*ubound(exam)) '随机读取exam这个数组中的数字
if i >0 and instr(Ai,"|" & i & "|")=0 then '判断数字是否读取过。如果读取过重新随机。
x = exam(i-1) '读取该数字
t= "|" & x & "|"
if instr(question,t)= 0 then '判断该题目是否读取过。读取过退出
set rsqu=server.createobject("adodb.recordset")
mysql = "select * from Exam_Question where id = " & x
rsqu.open mysql,econn,1,1
select case rsqu.fields("question_type")
case 1 '多选
if smnum=smQ then makeMark ssQ,smQ,ynQ,lsQ '题目数量到达指定数量 ,则继续循环
smnum=smnum+1
case 2 '单选
if ssnum=ssQ then makeMark ssQ,smQ,ynQ,lsQ
ssnum=ssnum+1
case 3 '判断
if ynnum=ynQ then makeMark ssQ,smQ,ynQ,lsQ
ynnum=ynnum+1
case 4 '论述题
if lsnum=lsQ then makeMark ssQ,smQ,ynQ,lsQ
lsnum=lsnum+1
end select
question=question & x & "|" '保存题目到question变量
anum=smnum+ssnum+ynnum+lsnum
if anum=ssQ+smQ+ynQ+lsQ then exit sub'分数累加
end if
ai=ai & i & "|" ' 保存已经随机过的数字。
end if
makeMark ssQ,smQ,ynQ,lsQ '继续循环。
end sub