4 回答

TA貢獻1826條經驗 獲得超6個贊
它應該是:
public static long fallingPower(int n, int k){
long result = n;
for (int i = 0; i < k; i++) {
n=n-1;
result = result * n;
}
return result;
}

TA貢獻2011條經驗 獲得超2個贊
public static long fallingPower(int n, uint k){
long result = 1;
for(; k > 0; k--, n--){
result *= n;
}
return result;
}

TA貢獻1809條經驗 獲得超8個贊
你應該乘以k時間,從每個因子開始n并遞減一個。您的代碼目前沒有任何意義。我會這樣做:
public static long fallingPower(int n, int k)
long result = n;
for (int i = 1; i < k; i++) {
result = result * (n-i);
}
return result;
}
k必須是非負的,所以你也需要在方法中處理它,例如有一個例外:
public static long fallingPower(int n, int k)
if(k < 0) {
throw new IllegalArgumentException("Negative exponent");
}
long result = n;
for (int i = 1; i < k; i++) {
result = result * (n-i);
}
return result;
}

TA貢獻1813條經驗 獲得超2個贊
如果我沒記錯的話,這更多的是編程邏輯,而不是你的方法。我沒有錯誤處理。我開始像你一樣倒退,假設零的最小整數排列等于 1,至少我們需要返回 1。你可以從 n 之前的 k 個數字開始,然后乘以直到達到 n。
public static long fallingPower(int n, int k)
{
long result = 1;
for (int i = 1 ; i <= k ; i++) {
result = result * n;
n = n-1;
}
return result;
}
添加回答
舉報