在一些编程语言中,可以为特定的参数值指定函数实现:
factorial[x] = x * factorial[x-1]
factorial[0] = 1
使用0
调用函数将使用第二个定义,而使用3
调用它将使用第一个定义。
我意识到这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多语言没有这个功能,但只有重载取决于数量或类型。有没有更具体的名称呢?
发布于 2019-08-01 23:00:23
这样的case-by-case functions在数学上称为piecewise functions。例如,在Scala中,它们可以使用case
语句实现,如下所示
val factorial: Int => Int = {
case 0 => 1
case x => x * factorial(x - 1)
}
哪种输出
factorial(4) // res1: Int = 24
这是使用pattern matching进行函数定义的一种形式。
同样,在Haskell中,我们可以使用模式匹配来定义函数,如下所示
factorial :: Integer -> Integer
factorial 0 = 1
factorial x = x * factorial (x - 1)
https://stackoverflow.com/questions/57242614
复制