官方题解 | #阶乘#

阶乘

http://www.nowcoder.com/practice/39fcf876fab34fe8afc298de10a1e112

本题考点:阶乘、递归

根据题目要求实现一个阶乘函数,阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。由于阶乘是递归函数的典型示例,所以通过递归的思想,如:number * fn(number -1)展开为number * (number-1) * (number-2)... * 1,可以快速实现某个正整数的阶乘计算,函数内部条件判断为:

  • 当参数等于0时,返回1。

  • 当参数不等于0时,返回当前值与fn(当前值 - 1)的积。

整个函数的终止条件为:当参数为0时。

参考答案:

function _factorial(number) {
	if(typeof number !== 'number') return
    if(number < 0) return
	if(number === 0) return 1
	return number * _factorial(number - 1)
}

方法二:

在函数体内实现一个循环,完成阶乘计算。

参考答案:

function _factorial(number) {
	if(typeof number !== 'number') return
	if(number < 0) return
	for(let i=number-1 ; i>0 ; i--) {
		number *= i
	}
	return number
}
全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
19
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务