gogo023 发表于 2011-2-13 09:36:33

递归出错请指教。

如下图一样一个错误提示。

papapa314 发表于 2011-2-13 14:36:22

是不是你递归的次数超过5000了?以前看过帮助,好像Au3是不支持超过5000的递归次数的。

gogo023 发表于 2011-2-14 09:15:25

我查过递归次数只有4000左右。

happytc 发表于 2011-2-14 09:46:07

贴代码吧,一般情况下,递归都可以用迭代替换掉的,并且迭代比递归效率高多了。

gogo023 发表于 2011-2-14 11:20:46


#include <Process.au3>
While 1
        Http()
WEnd

Func Http()
        Dim $PID, $I = 1
        $PID = Run(@ProgramFilesDir & "\Internet Explorer\IEXPLORE.EXE www.baidu.com")
                _RunDOS("taskkill /F /PID " & $PID)
        $I += 1
        Sleep(Random(5000, 10000, 1))
        Http()
EndFunc   ;==>Http这是我的代码。请帮忙看下。

www378660084 发表于 2011-2-14 18:32:31

没看出你为什么用递归..

xxoojoeooxx 发表于 2011-2-14 18:41:39

改成这样效果也差不多

#include <Process.au3>
While 1
      Http();这需要一直呼叫吗?
WEnd

Func Http()
      Dim $PID, $I = 1
      $PID = Run(@ProgramFilesDir & "\Internet Explorer\IEXPLORE.EXE www.baidu.com")
                _RunDOS("taskkill /F /PID " & $PID)
      $I += 1
      AdlibRegister ("Http",Random(5000, 10000, 1))
EndFunc   ;==>Http

easied 发表于 2011-2-14 18:42:55

测试递归等级,结果是可以成功执行3899次.第3900次程序退出.
你那代码直接在while里面调用http不用递归不就行了吗?

3mile 发表于 2011-2-14 19:39:22

的确,3899次.
测试代码如下 :
test(1)

func test($str)       
        if $str>3890 then ConsoleWrite($str&@crlf)
        $str+=1
        test($str)
EndFunc
页: [1]
查看完整版本: 递归出错请指教。