找回密码
 加入
搜索
查看: 2008|回复: 8

[AU3基础] 递归出错请指教。

  [复制链接]
发表于 2011-2-13 09:36:33 | 显示全部楼层 |阅读模式
如下图一样一个错误提示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-2-13 14:36:22 | 显示全部楼层
是不是你递归的次数超过5000了?以前看过帮助,好像Au3是不支持超过5000的递归次数的。
 楼主| 发表于 2011-2-14 09:15:25 | 显示全部楼层
我查过递归次数只有4000左右。
发表于 2011-2-14 09:46:07 | 显示全部楼层
贴代码吧,一般情况下,递归都可以用迭代替换掉的,并且迭代比递归效率高多了。
 楼主| 发表于 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
这是我的代码。请帮忙看下。
发表于 2011-2-14 18:32:31 | 显示全部楼层
没看出你为什么用递归..
发表于 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

发表于 2011-2-14 18:42:55 | 显示全部楼层
测试递归等级,结果是可以成功执行3899次.第3900次程序退出.
你那代码直接在while里面调用http不用递归不就行了吗?
发表于 2011-2-14 19:39:22 | 显示全部楼层
的确,3899次.
测试代码如下 :
test(1)

func test($str)        
        if $str>3890 then ConsoleWrite($str&@crlf)
        $str+=1
        test($str)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 13:30 , Processed in 0.083664 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表