使用递归计算数组中的负数?

时间:2017-12-03 22:25:50

标签: java recursion count

我编写了一个代码,用于计算数组中的负数,现在需要使用递归技术编写相同的代码。我是递归的新手,所以我不确定我是否在使用此代码进入正确的轨道。

public int countNeg (int[ ] nums, int n)
{
    int neg = 0;
    for (int index = 0; index < n; index ++)
        if (nums[index] < 0)
            neg++;
    return neg;
}

对于递归代码,这就是我所做的:

public int countNeg (int[ ] nums, int n)
{
     if (n < 0)
         return 0;
     else {
         int neg = countNeg (nums, n-1);
         if (nums[n-1] < 0)
             return neg + 1;
         else
             return neg;
      }
}

2 个答案:

答案 0 :(得分:1)

n是索引的参数。 您可以使用以下方法:

int numberOfNegativeNumbers = countNeg(nums, 0);

方法:

public int countNeg (int[ ] nums, int n) {
  if(n >= nums.length)
    return 0;
  else
    return ((mums[n] < 0) ? 1 : 0) + countNeg(nums, n+1);
}

答案 1 :(得分:0)

@ Bilghen的回答已经提供了所需的解决方案。

但我会提供一种使用Tail Recursion技术的解决方案。

author = models.ForeignKey('auth.User', default=None, null=True, blank=True)

这样称呼它 -

public int countNeg (int[ ] nums, int index) {
  return countNegTailRecur(nums, index, 0);
}

public int countNegTailRecur (int[ ] nums, int index, int total) {
  if(index >= nums.length)
    return total;
  else
    return countNeg(nums, index+1, nums[index] < 0 ? total + 1 : total);
}
相关问题