【发布时间】:2013-03-19 07:40:03
【问题描述】:
我需要用这个方法:
public static int countNegative(double[] numbers, int count){ }
计算双精度数组中负数的个数。如果我可以包含第三个参数 sum,我可以很容易地做到这一点,但我只能使用数组和一个 int。我完全被困住了。我已经尝试了几件事,但无法做到正确。我已经得到了从数组大小到 ArrayIndexOutOfBounds 的所有内容,但从来没有正确的答案。谁能帮我解决这个问题?
-编辑-
这里是确切的分配:
编写一个程序,从标准输入读取一系列数字(不是必需的整数),直到读取到 0,并将它们存储在 数组,类似于你在作业2中所做的。这部分完成了 使用迭代。您可以假设不会超过 100 数字。
然后计算存储在数组中的最大个数,计数 负数,并计算正数之和,使用 递归。因此,您将创建递归方法 findMax, Assignment9 类中的 countNegative 和 computeSumPositive 以及它们 将由 main 方法调用。
具体来说,必须实现以下递归方法 (这些方法不应包含任何循环):
public static double findMax(double[] numbers, int count) -> It finds the maximum number in the array, count is the number of elements在数组中
public static int countNegative(double[] numbers, int count) -> 计算负整数
public static double computeSumPositive(double[] numbers, int count) -> 对正整数的个数求和
findMax() 很简单:
public static double findMax(double[] numbers, int count){
if(numbers.length - 1 == count)
return numbers[count];
else
return Math.max(numbers[count], findMax(numbers, count+1));
}
这是我最近对 countNegative 的尝试。它只返回 99(我用 100 个元素初始化了数组):
public static int countNegative(double[] numbers, int count){
int i=0;
if(numbers[count]<0)
i=1;
if(numbers.length-1==count)
return count;
else
return i+countNegative(numbers,count+1);
}
如果我能算出这个负数,我应该能够算出 computeSumPositive。
Count 可以是您需要的任何值。我更多地将它用作 findMax 中的索引。
【问题讨论】:
-
你必须使用递归吗?另外,
count的参数是什么?如果您引用您在问题中给出的要求,并显示您尝试过的代码的要点,这将有很大帮助。 -
使用计数作为索引。
-
我添加了更多代码。是的,我必须使用递归。计数是你想要的任何东西。已引用要求。添加了最近的尝试。这是“家庭作业”。是的,count 可能最好用作索引。
标签: java arrays recursion negative-number