2 回答

TA貢獻1784條經(jīng)驗 獲得超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條經(jīng)驗 獲得超8個贊
根據(jù)我們的討論以及您對問題的解釋,在您的代碼中發(fā)現(xiàn)了以下問題。
函數(shù)中的邏輯
sqrtSquares()
有缺陷。它仍然需要修正,因為您正在實現(xiàn)余弦相似度。為了方便我再寫一次:
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 循環(huán)內(nèi))在僅處理數(shù)組的第一個元素后返回值。因此,將 return 語句拉到循環(huán)之外。
添加回答
舉報