for循环中的多个语句(1084错误)

时间:2011-09-30 02:56:20

标签: actionscript-3

我正在尝试在for循环中进行二进制搜索。但是,flash不喜欢以下for循环。

for(var select:int = Math.floor((min + max / 2)), var turns:int = 0; turns < input.length / 2 + 1; turns++, select= Math.floor((min + max / 2))){
    if(input[select] > want){
        max = select;
    } else if (input[select] < want){
        min = select;
    } else {
        return select;
    }
}

在第一行,我得到1084:语法错误:在var之前期待标识符。我想我知道为什么(我正在使用,分开不同的陈述),但我该如何解决呢? ;不会起作用,因为它是for循环使用的。

( var select:int = Math.floor((min + max / 2)) ; var turns:int = 0); turns < input.length / 2 + 1; //etc

也不起作用。

2 个答案:

答案 0 :(得分:2)

简单地抛弃第二个var(在逗号之后)应该可以工作我相信会这样做:

for(var select:int = Math.floor((min + max / 2)), turns:int = 0; turns < input.length / 2 + 1; turns++, select= Math.floor((min + max / 2))){
    if(input[select] > want){
        max = select;
    } else if (input[select] < want){
        min = select;
    } else {
        return select;
    }
}

答案 1 :(得分:0)

你是否必须将此作为for循环?这将作为递归函数更好地工作。

这里是for循环。尝试将select变量拉出for循环范围。

var select: int = Math.floor((min+max/2));
for(var turns:int = 0; turns < input.length / 2 + 1; turns++){

    if(input[select] > want){
        max = select;
        select= Math.floor((min + max / 2))
    } else if (input[select] < want){
        min = select;
        select= Math.floor((min + max / 2))
    } else {
       return select;
    }
}