function Test(i as integer) as boolean
for k as integer =0 to 10
if object(i)="ddddddd" then
return true
else
test(k)
end if
next
end function
如果在return true之后,如何让他一下返回,而不用一层一层出来?
...全文
64616打赏收藏
方法嵌套循环,如何一下子跳出所有循环?
function Test(i as integer) as boolean for k as integer =0 to 10 if object(i)="ddddddd" then return true else test(k) end if next end function 如果在return true之后,如何让他一下返回,而不用一层一层出来?
条件成立后,返回True, 退回上一层循环
此时执行语句
if test(k) then
return true
end if
由于test(k)返回的是True
所以执行if中的return true
返回的还是true,再退回上一层循环
再执行
if test(k) then
return true
end if
以此类推
怎么会像楼主说的“以后的条件都不会成立。所以最终的返回仍然是False.”呢?!
或是楼主的程序确实存在问题呢?!
主程序
sub main
try
test()
catch ex as exception
end try
end sub
function Test(i as integer) as boolean
for k as integer =0 to 10
if object(i)="ddddddd" then
return true
throw new exception("programer break")
else
test(k)
end if
next
end function
说实话,看楼主的程序感觉很困惑。
试想,如果第一次调用Test函数时参数i为5(随意但先不假设任意)的话,我们代入一两次来看看会有什么现象:
Test(5);
进入:
function Test(i =5 ) as boolean
for k as integer =0 to 10
if object(i=5)="ddddddd" then
return true '如果object(5)恰巧为"ddddddd"则一次性返回了,结果为TRUE
else
test(k=0) '如果不为"ddddddd",那么K首值为0,代入test.这里是个关键,见下面一段。
end if
next
end function
下面是承接上面的调用k=0,对Test来说即i=0
function Test(i =0 ) as boolean
for k as integer =0 to 10
if object(i=0)="ddddddd" then
return true '如果object(0)恰巧为"ddddddd"则一次性返回了,结果为TRUE
else
test(k=0) '如果很不巧的是object(0)也不为"ddddddd"的话,这时作为新循环的首轮,K仍然为0,而且对于以后将永远重复这个调用,直到内存崩溃也未算出头之日
end if
next
end function
不如把程序改成
function Test(i as integer) as boolean
for k as integer =0 to 10
if object(i)="ddddddd" then
return true
elseif test(k) then
return true
end if
next
end function