JavaScript算法练习:阶乘(Factorial)函数

特别声明:为感谢社区广大朋友对小站的支持,自2019年10月1日至2019年11月11日开通年费VIP通道,年费价格为 ¥299.00元。如果您喜欢小站的内容,可以点击开通会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!(^_^)

Factorial称之为阶乘,维基百科是这样描述的“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!。”

而阶乘函数是递归(Haskell)函数典型示例。在JavaScript中可能运用到递归函数。但在实际使用中,你可能没有考虑何时何地递归是有用的,或者使用不好会带来很多问题。

在这篇文章中我们来看看JavaScript如何实现阶乘的功能。

阶乘函数

先来简单的看看数学上阶乘函数,开头也说过,阶乘函数的参数是一个自然数,它返回1与此数之间所有数的乘积。比如,6的阶乘是1 × 2 × 3 × 4 × 5 × 6 = 720,而这样的方式,可以用一种递归函数来表示。如果n6,其模式是:

0! = 1
1! = 1
2! = 2 * 1
3! = 3 * 2 * 1
4! = 4 * 3 * 2 * 1
5! = 5 * 4 * 3 * 2 * 1
6! = 6 * 5 * 4 * 3 * 2 * 1

如此一来,阶乘可以简单的这样定义:

  • 0的阶乘是1
  • 任何数的阶乘都是此数乘以比此数小一的数的阶乘

可以定义一个factorial()函数来表示:

factorial (0) = 1
factorial (n) = n * factorial (n - 1)

第一行表示0的阶乘是1,第二行表示任意别的数n的阶乘等于n乘以 n-1的阶乘。注意那个把n-1括起来的括弧:没有这个括弧代码就会被解析称为(factorial n) - 1;函数行为的优先级是很高的,会最先执行

阶乘实现算法

阶乘函数在JavaScript中也是一种典型的算法:

  • factorial()函数返回的是一个整数的阶乘
  • 如果整数用字母n表示,所有正整数的阶乘是小于或等于n
  • 阶乘通用的表示符号是n!

阶乘函数测试用例

  • factorial(0)返回1
剩余80%内容付费后可查看

如需转载,烦请注明出处:https://www.w3cplus.com/javascript/factorial-function-in-javascript.html

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部