sanye000001 发表于 2012-10-29 20:34:18

如何让N个for语句用简短的语句描述

for $a=0 to 10 step 1
               for $a=0 to 10 step 1
                  for $a=0 to 10 step 1
                        for $a=0 to 10 step 1
                               ……(有N个for语句)
                     ……(有N个next语句)
                  next
                     next
               next
         next如果有N个for语句,N还是个变量,这个时候有什么办法?

sanye000001 发表于 2012-10-29 21:11:21

在线急等,行不行都说一下,谢谢

MicroBlue 发表于 2012-10-29 21:18:18

你能把问题说的具体点吗?这样描述太模糊了。

sanye000001 发表于 2012-10-29 21:24:56

回复 3# MicroBlue


    比方说,我们要得到一个1--N的和,我们可以这样写local $b=0,N
for $a=0 to N step 1
$b=$b+$a
next
这样N是变量,N是由用户输入的值。那么这个时候,1--N,变成了1--N个层层的for语句,那怎么表示呢?

annybaby 发表于 2012-10-29 22:15:30

楼主何不运行一下代的代码测试下,多次层都是11次~~
请修改下

whitehead 发表于 2012-10-29 22:20:16

问题说的越具体越容易得到帮助

sanye000001 发表于 2012-10-29 22:35:40

for $a=0 to 10 step 1
               for $a=0 to 10 step 1
                  for $a=0 to 10 step 1
                        for $a=0 to 10 step 1
                               ……(有N个for语句) ;这里有N个for,但是N是个变量,是个手动输入的值,如果我N的值输入100,那我就要手动输入100个for语句了,高于100呢,这样程序繁杂,有没有什么简单的办法,比方说写一个函数,进行调用,随着N的值的变化,函数调用的次数也跟着变化的等等
                     ……(有N个next语句)
                  next
                     next
               next
         next

annybaby 发表于 2012-10-29 22:47:25

回复 7# sanye000001

楼主没有试运行下代码??
你试过便知,就算中间有一万个for ,代码都只执行11次

sanye000001 发表于 2012-10-29 22:52:00

回复 8# annybaby


    不会吧,autoit不会那么烂吧

afan 发表于 2012-10-29 23:00:08

回复annybaby


    不会吧,autoit不会那么烂吧
sanye000001 发表于 2012-10-29 22:52 http://www.autoitx.com/images/common/back.gif


    是你的描述问题。你至少应该有一段可以运行的代码来诠释问题过程,而不是不能执行的伪代码。

MicroBlue 发表于 2012-10-29 23:01:12

回复 9# sanye000001


    你对for循环理解有问题啊,怪什么autoit啊。晕。

annybaby 发表于 2012-10-29 23:04:14

回复 9# sanye000001

遇到问题时请先思考并检查代码/实机测试,而不是假设问题出在编程工具上

annybaby 发表于 2012-10-29 23:05:06

回复 11# MicroBlue


就是就是~~

sanye000001 发表于 2012-10-29 23:12:28

回复 10# afan


    好吧,那我就用以下一段代码来说明一下:#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <array.au3>
Global Const $haoma =
Dim $haomax,$haomay,$array ;$haomax定义复选框
Local $i, $a = 50, $b = 80, $j,$x1,$x2,$y1,$y2,$suoyin,$z,$zu,$pro ;$a\$b表示界面上的距离 $i\$j定义复选框文本以及字体大小,$x/$x1\y1\y2表示输入的组数的值,$suoyin表示被选择的数组最后一个数值的下标,$z无意义,$zu表示输入的组数
$anzhuang = GUICreate("彩票幸运分 QQ:1375030119", 800, 600)
$y1=GUICtrlCreateInput($x1,110,350,80,30)
GUISetState(@SW_SHOW, $anzhuang)
Func sange($m)               ;这段代码表示有三个循环,因为有三个取值放在一个数组里面,现在有$y1个取值,要放在一个数组里面,我需要写入$y1个循环,怎么办?$y1=GUICtrlCreateInput($x1,110,350,80,30),$y1的值取决于用户输入$x1的值作的变化。
        Local $i1,$i2,$i3,$num1,$num2,$num3,$k=0
        For $i1 = 0 To $m Step 1
                                $num1 = $haomay[$i1]
                                For $i2 = 1 To $m Step 1
                                        If $i2 > $i1 Then
                                        $num2 = $haomay[$i2]
                                        For $i3 = 2 To $m Step 1
                                                If $i3 > $i2 Then
                                                        $num3 = $haomay[$i3]
                                                  ReDim $array[$k+1]
                                                $array[$k]=$num1
                                                  $array[$k]=$num2
                                                        $array[$k]=$num3
                                                  $k=$k+1
                                          EndIf
                                        Next
                                        EndIf
                                Next
        Next                       
        Return $array       
EndFunc
While 1
        $msg = GUIGetMsg()
        If $msg = $gui_event_close Then
                ExitLoop
        EndIf       
        Select
                Case $msg=$kaishi
                        $haomay=duqu()
                        GUICtrlSetData($pro,10)
                        $jieguo=sange(UBound($haomay)-1);得到二维数组的结果$jieguo[$k]
                        GUICtrlSetData($pro,50)
                        $yiweishuzu=yiwei($jieguo) ;二维转化成一维
                        GUICtrlSetData($pro,80)
                        $zu=duqux1() ;读取x1的值
                        GUICtrlSetData($pro,85)
                        zuhe($yiweishuzu,$zu)
                EndSelect
               
WEnd
GUIDelete($anzhuang)

MicroBlue 发表于 2012-10-29 23:13:55

_CallSelf(4)


Func _CallSelf($n)


        MsgBox(0,"",$n)

        If $n = 1 Then
                Exit
        Else
                _CallSelf($n-1)
        EndIf

EndFunc
页: [1] 2
查看完整版本: 如何让N个for语句用简短的语句描述