定义
一个正整数的阶乘是指所有小于或等于该正整数的正整数的乘积,记作n!,0的阶乘等于1
Java递归实现
/**
* 计算数n的阶乘值
*
* @param n
* 阶乘停止的值
* @return 阶乘后的结果
*/
public int factorial(int n) {
if (n == 0) {
return 1;
} else if (n < 0) {
return n * factorial(n + 1);
} else {
return n * factorial(n - 1);
}
}
Java非递归实现
/**
* 非递归实现阶乘
*
* @param n
* @return
*/
public int factorialWithoutTraversal(int n) {
int result = 1;
if (n == 0) {
// 如果n等于0直接返回1
return result;
}
int start = n > 0 ? 1 : n;// 如果n大于0的话,阶乘起始值设为1,否则设为n
int end = n > 0 ? n : -1;// 如果n大于0的话,阶乘终止值设为n,否则设为-1
for (; start <= end; start++) {
result = result * start;
}
return result;
}
网友评论