0

我正在将一个简单的点积算法实现到 actionscript 3.0 代码中。这是基本示例。

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

我这里有一个简单的代码。

public var array1:Array = [1, 2, 3]; // 4, 10, 18
    public var array2:Array = [4, 5, 6];
    public var answer:Number = 0;

    public function Algorithm() 
    {
        multiply();
    }
    public function multiply()
    {
        var temp:Number = 0 ;
        while (temp < array1.length) 
        {
            answer = array1[temp] * array2[temp];
            temp++;

        }
        trace(answer += answer);
    }

但是当我追踪它时......而不是32,它变成了36......看起来它再次为最后一个答案添加了4。

它困扰着我。

4

1 回答 1

0

每次数组循环时,您都在覆盖 answer。唯一存储的值是最后一个 (3*6 = 18)。在您的跟踪中,您实际上将其翻了一番,每次都给您 36。尝试这个:

answer = answer + ( array1[temp] * array2[temp] );

然后在最后追踪答案。

于 2012-07-09T14:02:59.143 回答