阶乘

作者: 小贱嘎嘎 | 来源:发表于2017-05-25 09:48 被阅读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;
    }

    相关文章

      网友评论

          本文标题:阶乘

          本文链接:https://www.haomeiwen.com/subject/gpmaxxtx.html