题目----递归和非递归分别实现求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;
}
 


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