开发者社区> 问答> 正文

求阶乘n!的递归算法

求阶乘n!的递归算法

展开
收起
知与谁同 2018-07-17 16:21:02 2486 0
1 条回答
写回答
取消 提交回答
  • #include
    double fun(int n);
    int main(void)
    {
    int n;
    printf("Enter n:");
    scanf("%d",&n);
    printf("%lf\n",fun(n));
    return 0;
    }
    double fun(int n)
    {
    if(n==0||n==1)
    return 1;
    else
    return n*fun(n-1);
    }

    程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解.

    递归的能力在于用有限的语句来定义对象的无限集合。

    一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

    1

    ubuntu 14.04 linux c

    gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2

    2

    #include <stdio.h>

    #include <string.h>

    #include <stdlib.h>

    long factorial(int n)

    {

    if(n == 1)

    return 1;

    else

    return n*factorial(n-1);

    }

    int main(int argc,char *argv[])

    {

    int n = 0;

    if(argc != 2)

    {

    printf("input error,exit!!\n");

    return -1;

    }

    n = atoi(argv[1]);

    printf("%d! = %ld\n",n,factorial(n));

    return 0;

    }

    3

    root@linux:~/code# gcc -o factorial factorial.c 

    root@linux:~/code# ./factorial 6

    6! = 720

    2019-07-17 22:54:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载