![](/img/trans.png)
[英]How to return every nth even number in a list with foldLeft in Scala?
[英]Scala : How to check every single digit of a number is even or odd?
def digitaleven(n:Int):Boolean = {
if (n%2==0){
return true
}
else {
return false
}
}
这是我到目前为止所得到的,但是它仅适用于一位数字,我如何使用递归(如果使用其他方法)使其具有随机数字呢?
fe:我知道如何检查每个数字的偶数或奇数,n%2用于最后一位,n / 10%2用于第二位等等,但是我很难实现它
谢谢你的帮助
使用forall
检查每个数字是否为偶数(您无需使用map
进行转换。在forall
内进行转换)。
def isAllEven(n: Int) = s"$n".forall(_.asDigit % 2 == 0)
def isAllEven(n: Int): Boolean = {
val digits = s"$n".toList
def helper(rest: List[Char]): Boolean = rest match {
case Nil => true
case x :: xs =>
if (x.asDigit % 2 == 0)
helper(xs)
else false
}
helper(digits)
}
上面的函数将数字转换为字符串表示形式,然后将字符串转换为字符列表,然后检查每个字符是否为偶数。
您的代码可以像下面这样编写,但是不会检查每个数字是否为偶数。
def digitaleven(n:Int): Boolean = n % 2 == 0
您的代码检查数字是否为偶数。 但是它不会检查数字中的每个数字是否为偶数。 为了做到这一点,请使用上面的递归函数。
那这个呢:
def allDigitsEven(number:Int) = {
number.toString.map(_.asDigit).forall(_%2==0)
}
首先,您需要确定一个基本情况,以确保所有数字都是偶数并返回true
。 然后,如果您不确定所有数字,但当前数字是偶数,则输入递归大小写以检查所有其他数字也是偶数。
仅使用您的公式完全有可能。
其他方式:
// Using explicit recursion and pattern matching
def digitaleven(n:Int):Boolean = n match {
case 0 => true
case n => ((n % 10) % 2 ==0) && digitaleven(n / 10)
}
一线。
def digitaleven(n:Int):Boolean =
n == 0 || n % 2 == 0 && digitaleven(n/10)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.