2 回答
TA贡献1784条经验 获得超9个赞
public static double sqrtSquares(double []A) {
double sum = 0;
for(int i = 0; i<A.length; i++) {
if(A[i] < 0 ) {
A[i] = 0;
}
sum += A[i]*A[i]; // calculate the running sum of squares
}
return Math.sqrt(sum);
}
基于余弦相似度定义: https: //en.wikipedia.org/wiki/Cosine_similarity
TA贡献1871条经验 获得超8个赞
根据我们的讨论以及您对问题的解释,在您的代码中发现了以下问题。
函数中的逻辑
sqrtSquares()
有缺陷。它仍然需要修正,因为您正在实现余弦相似度。为了方便我再写一次:
public static double sqrtSquares(double []A) {
double sum = 0;
for(int i = 0; i<A.length; i++) {
if(A[i] < 0 ) {
A[i] = 0;
}
sum += A[i]*A[i]; // calculate the running sum of squares
}
return Math.sqrt(sum); // calculate the square root of the sum of squares
}
使用两个 return 语句(其中一个位于 for 循环内)在仅处理数组的第一个元素后返回值。因此,将 return 语句拉到循环之外。
添加回答
举报