2012-07-09 18 views
0

我正在執行一個簡單的點積算法到actionscript 3.0代碼中。這裏是基本的例子。as3中的點積執行

(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最後的答案。

它讓我煩惱。

+0

...或者您可以使用[正確的對象](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Vector3D.html)。不要重新發明輪子。 – zzzzBov 2012-07-09 14:08:20

回答

0

每次數組循環時都覆蓋回答。唯一存儲的值是最後一個(3 * 6 = 18)。在你的蹤跡中,你實際上將其加倍,每次都給你36次。試試這個:

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

然後只是在最後追蹤答案。

+0

謝謝你的答案..作品像魅力..謝謝。 – 2012-07-09 14:10:56