java - Java中负数相减的问题

标签 java recursion

我正在编写一个递归方法来计算数组中所有奇数的总和。但是,我的程序将负数添加为正数。

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 唯一可能的值为 -10 )。

因此,您的两个片段是等效的:外部 ifnums[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/

相关文章:

java - 如何从 Spring Security 扩展用户类并使用 JPA 创建表

java - jython 中的 SSL 非法状态异常

java - 关于 Java 的 int 的基本问题

java - 硬币方法中的递归方法

c++ - 给定一个数字的质因数分解,在没有递归的情况下迭代 C++ 中的所有因子

java - 递归使用多少堆栈(从列表中删除节点)?

java - Java 的 mysql 执行时间

java - 如何解决使用 for 循环打印表格的 Java 问题?

java - 递归方法打印帕斯卡三角形上下颠倒和右侧向上(通过 boolean 值)

java - 在有限网格中寻找路径