java - 以 boolean 值作为返回值的递归方法来计算数字中的数字

标签 java recursion boolean counter

我最近在大学参加考试,遇到了一个问题。该任务的定义非常具体如下:

编写一个递归方法(不要更改签名或参数;不允许使用全局变量;不要使用字符串或 Stringbuffer 方法;没有循环),如果数字“n”为奇数,如果零的数量为偶数,则为“假”。

签名和参数:

public static boolean oddZeros(int n) {
}

所以对于:

n = 10 //true
n = 100 //false
n = 1402050 //true
n = 0 // true
n = 12 // false

你明白了..

我理解递归的概念,但我不知道如何在仅给出 boolean 值的情况下计算某些内容。我尝试在方法内添加一个计数器变量,但每当我进行递归调用时,显然该变量将被重置为其初始化状态。

由于这是一个非常具体的问题,到目前为止我还没有找到任何解决方案。像这样的方法会是什么样子?

最佳答案

public static boolean oddZeroes(int n) {
  if (n < 10) {
    return n == 0;
  }
  return (n % 10 == 0) ^ oddZeroes(n / 10);
}

你甚至可以把它写成一行:

public static boolean oddZeroes(int n) {
  return n < 10 ? n == 0 : (n % 10 == 0) ^ oddZeroes(n / 10);
}

如果您还想处理负输入,请添加类似 if (n < 0) {return oddZeroes(-n);} 的内容一开始,即:

public static boolean oddZeroes(int n) {
  if (n < 0) {
    return oddZeroes(-n);
  }
  if (n < 10) {
    return n == 0;
  }
  return (n % 10 == 0) ^ oddZeroes(n / 10);
}

关于java - 以 boolean 值作为返回值的递归方法来计算数字中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789640/

相关文章:

javascript - 生成 JavaScript 数组的排列

python - 每个深度的二叉树遍历总和

MySQL:在一列中存储多个 boolean 值。一个 tinyint(4) -vs- 几个 tinyint(4)

c# - 我无法理解这种编程风格

java - 如何用普通空格替换不间断空格 (nbsp)?

java - Solr 查询只返回 Id 的

python - Python中的递归堆栈

java - Java中的 boolean 逻辑表达式

java - 如何仅将具有 xml 标签的文本文件中的某些元素打印到新文本文件中?

使用 Maven 时,JavaFX Font.loadFont() 始终为 null