当前位置: 面试刷题>> 点积 (经典算法题500道)


### 完整题目描述 **题目:实现向量点积(Dot Product)的算法** 在数学中,向量点积(也称为内积或标量积)是一种代数运算,它接受两个等长的数字序列(通常是坐标向量),并返回一个单一的数字。对于两个n维向量 **A** = (a1, a2, ..., an) 和 **B** = (b1, b2, ..., bn),它们的点积定义为: $$ \mathbf{A} \cdot \mathbf{B} = \sum_{i=1}^{n} a_i b_i = a_1b_1 + a_2b_2 + \cdots + a_nb_n $$ 请编写一个函数来计算两个向量的点积,并使用PHP、Python和JavaScript分别实现这个函数。 ### PHP实现 ```php function dotProduct($vectorA, $vectorB) { $length = count($vectorA); if ($length !== count($vectorB)) { throw new Exception("Vectors must be of the same length."); } $result = 0; for ($i = 0; $i < $length; $i++) { $result += $vectorA[$i] * $vectorB[$i]; } return $result; } // 示例 $vectorA = [1, 2, 3]; $vectorB = [4, 5, 6]; echo dotProduct($vectorA, $vectorB); // 输出 32 ``` ### Python实现 ```python def dot_product(vectorA, vectorB): if len(vectorA) != len(vectorB): raise ValueError("Vectors must be of the same length.") return sum(a * b for a, b in zip(vectorA, vectorB)) # 示例 vectorA = [1, 2, 3] vectorB = [4, 5, 6] print(dot_product(vectorA, vectorB)) # 输出 32 ``` ### JavaScript实现 ```javascript function dotProduct(vectorA, vectorB) { if (vectorA.length !== vectorB.length) { throw new Error("Vectors must be of the same length."); } let result = 0; for (let i = 0; i < vectorA.length; i++) { result += vectorA[i] * vectorB[i]; } return result; } // 示例 let vectorA = [1, 2, 3]; let vectorB = [4, 5, 6]; console.log(dotProduct(vectorA, vectorB)); // 输出 32 ``` ### 注意事项 - 在每个实现中,我们都首先检查了输入向量的长度是否相等,因为点积要求两个向量等长。 - 使用异常(PHP、Python)或错误(JavaScript)来处理不等长的情况,以确保程序的健壮性。 - 每种语言都通过遍历向量元素并逐个相乘然后求和来计算点积。 - 在实际应用中,根据上下文,可能还需要考虑数值精度问题,尤其是在处理浮点数时。但在这个基本示例中,我们假设所有输入都是整数。
推荐面试题