开发者社区> 问答> 正文

求阶乘n!的递归算法

求阶乘n!的递归算法

展开
收起
知与谁同 2018-07-17 16:21:02 2554 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
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载