もっと機能的な方法でwhile(n> 0)ループを処理する方法があるのだろうか、私はKに等しい桁数を数える小さなScalaアプリを持っています実施例30および3 4 [3、13、23、30]を返すscala how to reduce while n> 0
object NumKCount {
def main(args: Array[String]): Unit = {
println(countK(30,3))
}
def countKDigit(n:Int, k:Int):Int = {
var num = n
var count = 0
while (num > 10) {
val digit = num % 10
if (digit == k) {count += 1}
num = num/10
}
if (num == k) {count += 1}
count
}
def countK(n:Int, k:Int):Int = {
1.to(n).foldLeft(0)((acc, x) => acc + countKDigit(x, k))
}
}
Iは純粋に機能的なアプローチを使用して機能countKDigitを定義する方法を探しています:1からNの範囲から
'filter(c => c.asDigit == k).length'を' count(_。asDigit == k) 'に置き換えることができます。 –