允许不同参数值的单独函数实现的功能名称是什么?

What is the name of feature that allows separate function implementations for different values of parameters?

在某些编程语言中,可以为特定参数值指定函数实现:

factorial[x] = x * factorial[x-1]
factorial[0] = 1

使用 0 调用函数将使用第二个定义,而使用 3 调用函数将使用第一个定义。

我知道这是一种函数重载,但如果我搜索具有函数重载的语言,我会发现很多没有此功能但仅根据数量或类型进行重载的语言。有更具体的名称吗?

数学中的case-by-case functions are known as 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)