Java 写一个下降功率法

Java 写一个下降功率法,java,Java,然而,在许多组合公式中有用的降幂相关运算中,通过在指数下面加下划线的语法表示,乘以乘积的每一项总是比前一项少一项。例如,下降功率83将被计算为8×7×6=336。类似地,下降功率105将等于10×9×8×7×6=30240。如果基数n为负值,则无任何重要变化。例如,下降功率(-4)5的计算方法与-4*-5*-6*-7*-8=-6720的计算方法完全相同 此方法应计算并返回下降功率nk,其中n可以是任何整数,k可以是任何非负整数。(类似于普通幂,n0=1表示任意n。)自动测试仪的设计使您的方法不需

然而,在许多组合公式中有用的降幂相关运算中,通过在指数下面加下划线的语法表示,乘以乘积的每一项总是比前一项少一项。例如,下降功率83将被计算为8×7×6=336。类似地,下降功率105将等于10×9×8×7×6=30240。如果基数n为负值,则无任何重要变化。例如,下降功率(-4)5的计算方法与-4*-5*-6*-7*-8=-6720的计算方法完全相同

此方法应计算并返回下降功率nk,其中n可以是任何整数,k可以是任何非负整数。(类似于普通幂,n0=1表示任意n。)自动测试仪的设计使您的方法不需要担心潜在的整数溢出,只要您使用长类型的64位整数执行计算

public static long fallingPower(int n, int k)

公共静态长跌落功率(int n,int k)
长结果=n;
对于(int i=n;i

我的方法对吗?

你应该将
k
乘以,从
n
开始,然后将每个因子递减一。你的代码目前没有任何意义。我会这样做:

public static long fallingPower(int n, int k)
    long result = n;

    for (int i = n; i < k; i--) {
      result = result * n;
    }

    return result;
  }
应该是:

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;
}

公共静态长跌落功率(int n,int k){
长结果=n;
for(int i=0;i
如果我没有错的话,这更多的是编程逻辑,而不是您的方法。我没有错误处理。我开始倒向,就像你一样,假设零的最小整数置换等于1,至少我们需要返回1。 你可以从n之前的k数开始,然后再相乘直到n

public static long fallingPower(int n, uint k){
    long result = 1;

    for(; k > 0; k--, n--){
        result *= n;
    }

    return result;
}

公共静态长跌落功率(int n,int k)
{
长期结果=1;

对于(int i=1;i)你想确保你增加i或确保i>k。我意识到上面的评论与“下降功率法”是一样的顺便说一句,它实际上被称为置换。您可能还需要验证您的参数。k通常必须等于或大于1,且不超过n。n通常要求为正(大于0)。公共静态长fallingPower(int n,int k)long result=n;if(k;i++{result=result*n;}返回结果;}请不要在注释中张贴代码;格式会使其无法阅读。编辑您的问题,并在问题中添加格式正确的代码。请使用您的注释权限,而不是将注释混合到您的答案中。这样做。它将永远不会进入for循环并返回
n
。但它应该根据requ为k=1返回n*n-1irement,对吗?不。那就是
k=2
k
是因子的数量(因此称为指数)。
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;
}
public static long fallingPower(int n, uint k){
    long result = 1;

    for(; k > 0; k--, n--){
        result *= n;
    }

    return result;
}
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;
}