我正在编写一个递归方法来计算数组中所有奇数的总和。但是,我的程序将负数添加为正数。
if(nums[start] % 2 == 1) {
sum+=nums[start];
return computeSumOfOdd(nums, start + 1, sum);
所以我将代码更改为:
if(nums[start] % 2 == 1) {
if(nums[start] < 0)
sum-=nums[start];
else
sum+=nums[start];
return computeSumOfOdd(nums, start + 1, sum);
它仍然给我相同的响应,但我不知道我做错了什么。
最佳答案
在 Java 中,x % 2
永远不能等于1
对于负x
( x % 2
唯一可能的值为 -1
和 0
)。
因此,您的两个片段是等效的:外部 if
当 nums[start] < 0
时,永远不会输入语句.
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3
关于java - Java中负数相减的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432135/