递归-求阶乘

简介: 定义一个函数直接或间接的调用自己递归满足三个条件递归必需有一个明确的终止条件该函数所处理的数据规模必须在递减这个转化必须是可解的循环和递归递归易于理解速度慢所需存储空间大(函数调用需要发送形参与实参,还要对调用函数压栈,这...

定义

  • 一个函数直接或间接的调用自己

递归满足三个条件

  • 递归必需有一个明确的终止条件
  • 该函数所处理的数据规模必须在递减
  • 这个转化必须是可解的

循环和递归

递归

  • 易于理解
  • 速度慢
  • 所需存储空间大(函数调用需要发送形参与实参,还要对调用函数压栈,这些都需要分配内存空间)

循环

  • 不易理解
  • 速度快
  • 所需存储空间小
#include <stdio.h>
#include <stdlib.h>

/**
    递归求阶乘
*/
long factorial(int n){
    if(1==n) //递归结束条件
        return 1;
    else
        return factorial(n-1)*n;
}

int main()
{
    int n;
    printf("请输入你要求阶乘的数:");
    scanf("%d",&n);
    printf("你所求的阶乘是:%ld\n",factorial(n));
    return 0;
}

运行结果:

img_7a520ffbd3be052ce034500377f6e555.png
image.png
目录
相关文章
|
算法 C++
C++快速幂(递归)
C++快速幂(递归)
|
6月前
函数\递归函数求阶乘
函数\递归函数求阶乘
60 3
|
7月前
递归阶乘详解
递归阶乘详解
55 1
|
7月前
|
C语言
递归求阶乘
【1月更文挑战第18天】C语言实例——递归求阶乘。
37 1
|
算法 测试技术 C#
C++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
编译器
位运算、递推与递归
位运算、递推与递归
48 0
|
机器学习/深度学习 算法 Java
从斐波那契数列到递归
大家好,我是王有志。今天我们要通过经典数学问【题斐波那契数列】来学习非常重要的编程技巧:递归。
150 1
从斐波那契数列到递归
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
62 0
|
机器学习/深度学习 算法
使用递归方法和for循环方法求阶乘
使用递归方法和for循环方法求阶乘
146 0
|
机器学习/深度学习
求n的阶乘(递归法和循环法
根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。