找回密码
 加入
搜索
查看: 2012|回复: 7

[效率算法] [已解决]递归问题,递归之后设置@error的值总是零

  [复制链接]
发表于 2011-8-23 04:52:26 | 显示全部楼层 |阅读模式
本帖最后由 AUFS 于 2011-8-31 03:38 编辑

请问这样的情况怎么解决...我想要的时候达到15之后就只返回15 而不是再往下跳
_Aus()
ConsoleWrite('!~:' & @error & @CRLF)


Func _Aus()
Assign('123',Eval('123')+1,2)
If Eval('123') = 15 Then
;~ ConsoleWrite('!~值:' & Eval('123') & @CRLF)
Return SetError(15,1,1)
EndIf
_Aus()
EndFunc
发表于 2011-8-23 10:00:34 | 显示全部楼层
感觉逻辑有点问题,就是Return语句是否可以放在函数结尾。可以改成以下代码试试看:
Func _Aus()
  Assign('123',Eval('123')+1,2)
  If Eval('123') = 15 Then
    ;~ ConsoleWrite('!~值:' & Eval('123') & @CRLF)
    Return SetError(15,1,1)
  else
    Return _Aus()
  EndIf
EndFunc
发表于 2011-8-23 15:19:16 | 显示全部楼层
回复 1# AUFS
'往下跳'是什么意思
 楼主| 发表于 2011-8-23 16:26:20 | 显示全部楼层
回复  AUFS
'往下跳'是什么意思
netegg 发表于 2011-8-23 15:19



    呵呵...表达问题... 我的意思是在到条件了直接返回 Return
 楼主| 发表于 2011-8-23 16:29:43 | 显示全部楼层
回复 2# wangsheng108


测试返回的值都是0 而不是达到条件后的15
发表于 2011-8-23 17:21:40 | 显示全部楼层
本帖最后由 netegg 于 2011-8-23 20:33 编辑

回复 5# AUFS
测试了一下,不是返回值有问题,好象是中断的事,加一行#AutoIt3Wrapper_Run_Debug_Mode=y
返回正确,不加的话不返回
 楼主| 发表于 2011-8-23 23:58:18 | 显示全部楼层
回复  AUFS
测试了一下,不是返回值有问题,好象是中断的事,加一行#AutoIt3Wrapper_Run_Debug_Mode=y
返回 ...
netegg 发表于 2011-8-23 17:21


加这个这样控制台输出太频繁....达不到效果...最终是输出了正确的值...但这不怎么合意啊...有没有更好的解决办法?
 楼主| 发表于 2011-8-31 03:37:54 | 显示全部楼层
请问这样的情况怎么解决...我想要的时候达到15之后就只返回15 而不是再往下跳
AUFS 发表于 2011-8-23 04:52



不知道这个递归的中断应该怎么完美解决....先结贴吧..没找到满意的答案...望高手来解决
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-3 00:26 , Processed in 0.070866 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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