递归是一种典型的算法,许多问题既可以用非递归的方法,也可以用递归的方法处理。在实现递归时,在时间和空间上的开销比较大,但符合人们思路,程序容易理解,人们可以不去考虑实现递归的过程细节,只需写出递归公式和递归结束条件(即边界条件),即可很容易写出递归函数。由于计算机的性能提高很快,人们首先考虑的往往不是效率问题,而是程序的可读性问题。因此,许多人优先考虑用递归方式编程。

#include <iostream>
using namespace std;
long fac(int n)//递归函数 
{
    long f;
    if(n<0)
    {cout<<"data error!"<<endl;//如果输入负数,报错并以-1作为返回值。
    f=-1; }
    else 
      if(n==0||n==1)
    f=1;
      else 
      f=fac(n-1)*n;
      return f;
}   
int main()
{
    int n;
    long f,y;
    cout<<"please input an integer;";
    cin>>n;
    y=fac(n);
    cout<<n<<"!="<<y<<endl;
    return 0;
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐