题目----递归和非递归分别实现求n的阶乘(不考虑溢出的问题)

简介: 题目----递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
/*
Fac(N) = 1*2*3*……*N
递归方式实现:
        1    N <= 1
Fac(N)
        Fac(N-1)*N    N >= 2
*/
 
 
long long Fac(int N)
{
    if(N <= 1)
        return 1;
    
    return Fac(N-1)*N;
}
 
 
/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{
    long long ret = 1;
    for(int i = 2; i <= N; ++i)
    {
        ret *= i;
    }
    
    return ret;
}
 


目录
相关文章
|
算法 C++
C++快速幂(递归)
C++快速幂(递归)
|
6月前
函数递归详解----跳台阶、斐波那契数列、汉诺塔问题
递归的思想:把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。递归中的递就是递推的意思,归就是回归的意思。
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
60 0
剑指offer_递归与循环---斐波那契数列
剑指offer_递归与循环---斐波那契数列
62 0
剑指offer_递归与循环---跳台阶
剑指offer_递归与循环---跳台阶
60 0
剑指offer_递归与循环---矩形覆盖
剑指offer_递归与循环---矩形覆盖
81 0
字符串的逆序(循环和递归两种解法)
字符串的逆序(循环和递归两种解法)
163 0
|
机器学习/深度学习
求n的阶乘(递归法和循环法
根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。