0

単純なドット積アルゴリズムをactionscript3.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

配列がループするたびに答えを上書きしています。保存されている唯一の値は最後(3 * 6 = 18)です。あなたのトレースでは、それを効果的に2倍にし、毎回36を与えています。これを試して:

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

次に、最後に答えをトレースします。

于 2012-07-09T14:02:59.143 に答える