算法第三节:使用递归算法解决“阶乘”问题

来源:互联网 发布:深入理解nginx第二版 编辑:程序博客网 时间:2024/06/06 05:12

问题描述:要求求出1*2*3*4……*n的积,即n!

算法分析:使用递归法解决

使用递归算法时应注意:
1.递归时过程或函数调用自身的过程
2.在使用递归策略时,必须有一个明确的递归结束条件,即递归出口
3.递归算法很简洁,但运行效率较低,一般不提倡递归算法设计程序
4.在递归调用过程中,系统用栈来储存每一层的返回值和局部量。递归次数多时,容易造成栈溢出。

实现代码如下:

#include<stdio.h>int fact(int n);//函数声明int main(){    int x;    printf("请输入一个计算阶乘的整数:");    scanf_s("%d", &x);    printf("%d!的阶乘为:%d\n", x, fact(x));    getchar();    return 0;}int fact(int n){//递归函数    if (n <= 1)        return 1;    else        return n*fact(n - 1);}

输入结果为:
这里写图片描述