递归计算字符串中所有字母的 Unicode 代码的乘积

Lux*_*ode 1 recursion scala

我有点不喜欢递归(这就是我致力于此的原因)并且我无法弄清楚如何做到这一点:("Hello" foldLeft(1))((x, y) => x * y.toInt)递归。有什么想法吗?

Lar*_*ien 5

scala> def r(s : String) : Int = {
 | s match { 
 | case "" => 1
 | case _ => s.head.toInt * r(s.tail)
 | }
 | }
r: (s: String)Int

scala> r("hello")
res4: Int = 714668928
Run Code Online (Sandbox Code Playgroud)

  • @LuxuryMode:对于尾递归的函数,最后一个表达式必须是对函数本身的调用。在这种情况下,最后一个表达式是乘法。 (2认同)