编写用C语言实现的求n阶阶乘问题的递归算法

时间:2020-11-23 10:02:15 笔试经验 我要投稿

编写用C语言实现的求n阶阶乘问题的递归算法

  代码如下:

  long int fact(int n)

  {

  int x;

  long int y;

  if(n<0)

  {

  printf(“error!”);

  }

  if(n==0)

  return 1;

  x=n-1;

  y=fact(x);

  return (n*y);

  }

  拓展阅读:

  特点

  递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

  递归算法解决问题的特点:

  (1) 递归就是在过程或函数里调用自身。

  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

  (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

  (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

  要求

  递归算法所体现的“重复”一般有三个要求:

  一是每次调用在规模上都有所缩小(通常是减半);

  二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的`输出就作为后一次的输入);

  三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。

【编写用C语言实现的求n阶阶乘问题的递归算法】相关文章:

用C或者C++语言实现SOCKET通信12-14

用C语言实现文件读写操作12-25

用C++编写程序实现向右循环移位12-13

递归实现回文判断12-27

经典C语言面试算法题09-24

2016年C语言面试算法题(附答案)09-24

c语言指针面试常见问题09-28

编写一个程序:输入N,打印N*N矩阵12-20

图像拼接算法及实现08-16

递归计算如下递归函数的值12-16