def digitaleven(n:Int):Boolean = {
if (n%2==0){
return true
}
else {
return false
}
}
這是我到目前爲止,但它只適用於單個數字號碼,我如何使它使用遞歸(如果其他)的隨機數字的數字?Scala:如何檢查一個數字的每個數字是偶數還是奇數?
FE:我知道如何檢查每個數字爲偶數或奇數,正爲最後一位數2%,N/10%2謝勝利去年等等...但我有困難來實現它
感謝您幫助
def digitaleven(n:Int):Boolean = {
if (n%2==0){
return true
}
else {
return false
}
}
這是我到目前爲止,但它只適用於單個數字號碼,我如何使它使用遞歸(如果其他)的隨機數字的數字?Scala:如何檢查一個數字的每個數字是偶數還是奇數?
FE:我知道如何檢查每個數字爲偶數或奇數,正爲最後一位數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)
}
感謝您的回答!但我需要做它作爲一個遞歸通過如果其他鏈,我不能用我的作業 – manonmars
首先,您需要確定您確定所有數字均勻並且返回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)
}
'(n%10)%2'等同於並可縮寫爲'n%2'。 –
一個一襯墊。
def digitaleven(n:Int):Boolean =
n == 0 || n % 2 == 0 && digitaleven(n/10)
感謝回答!但我需要做它作爲一個遞歸通過如果其他鏈,我不能使用它爲我的家庭作業 – manonmars
@manonmars編輯答案。請檢查 – pamu