Scala递归函数值定义

elm*_*elm 2 recursion scala function

这个非编译代码定义递归函数值,

val factorial = (n:Int) => if (n < 1) 1 else n * factorial(n-1)
Run Code Online (Sandbox Code Playgroud)

产生错误信息,例如

recursive value factorial needs type
Run Code Online (Sandbox Code Playgroud)

如何声明返回类型?

om-*_*nom 8

像这样

val factorial: Int => Int = (n:Int) => if (n<1) 1 else n*factorial(n-1)
Run Code Online (Sandbox Code Playgroud)

事实上,我会像这样写:

def factorial(n: Int): Int = if (n < 1) 1 else n * factorial(n-1)
Run Code Online (Sandbox Code Playgroud)