阶乘

2017-05-25  本文已影响0人  小贱嘎嘎

定义

一个正整数的阶乘是指所有小于或等于该正整数的正整数的乘积,记作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;
}
上一篇下一篇

猜你喜欢

热点阅读