首页 > 试题广场 >

求阶乘

[编程题]求阶乘
  • 热度指数:1606 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}你需要实现一个函数,接受的参数为一个非负整数 n1 \le n \le 10^4),你需要计算出 n ! 的值,并作为该函数返回值,使得该函数可以实现求一个正整数的阶乘的功能。

\hspace{15pt}如果你不知道阶乘是什么,这里给出一个公式 n! = n \times (n-1) \times (n-2) \times \cdots \times 1

\hspace{15pt}由于结果可能很大,你需要返回最终的计算结果对 10^9 +7 取模的结果即可。
示例1

输入

1

输出

1
示例2

输入

2

输出

2
示例3

输入

3

输出

6

备注:
\hspace{15pt}提示,取模运算对加法运算满足交换律和结合律,所以在计算过程中多次取模得到的计算结果,和全部计算都完成后得到的计算结果是相同的。
int factorialOfN(int n ) 
{
    if(n<=1)
    return 1;
    else
     {
        return (long long)n*factorialOfN(n-1)%1000000007;
     }
    
}

发表于 2025-07-12 14:44:37 回复(0)
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算 n 的阶乘
     * @param n int整型
     * @return int整型
     */
    public int factorialOfN (int n) {
        // write code here
        long result = 1;
        long MOD = 1000000007L;
        for(int i = 1;i <= n;i++)
        {
            result = (result * i % MOD);
        }
       
        return (int)(result);
    }
}
发表于 2025-07-09 20:56:40 回复(0)
温馨提示,不开longlong会爆炸呢
发表于 2025-07-05 14:29:10 回复(1)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算 n 的阶乘
# @param n int整型 
# @return int整型
#
class Solution:
    def factorialOfN(self , n: int) -> int:
        # write code here
        # 用于防止整数溢出和提高计算效率
        MOD = 10**9 + 7
        if n == 0&nbs***bsp;n == 1:
            return 1
        i = n
        total = 1
        while i>1:
            total = (total * i)% MOD
            i -= 1
        return total
        
if __name__ == "__main__":
    n = int(input())
    Solution().factorialOfN(n)

发表于 2025-06-08 17:02:51 回复(0)