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 語句拉到循環之外。
添加回答
舉報