正文

C++ 入门 第四章 4.10 函数的递归调用[例题2]2008-09-10 14:17:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/38184.html

分享到:

 

4.11 用递归方法求n!。
n!可以用递推方法,即从1开始,乘2,再乘3……直乘到n
n!也可以用递归方法,即5!=4!×5,而4!3!×4,,1!=1。可用下面的递归公式表示:
 n= 1 (n=0,1)
n·(n-1) (n>1)
有了例4.10的基础,很容易写出本题的程序:
#include <iostream>
using namespace std;
long fac(int);                           //函数声明
int main( )
 {int n;                                 //n为需要求阶乘的整数
long y;                                //y为存放n!的变量
 
cout<<please input an integer :″;     //输入的提示                 
cin>>n;                                //输入n
  y=fac(n);                              //调用fac函数以求n!
  cout<<n<<!=<<y<<endl;                //输出n!的值
  return 0;
 }
long fac(int n)                          //递归函数
{long f;
 if(n<0)
  {cout<<n<0,data error!<<endl;       //如果输入负数,报错并以-1作为返回值
   f=-1;}
 else if (n==0||n==1) f=1;              //0!1!的值为1
else f=fac(n-1)*n;                     //n>1时,进行递归调用
 return f;                              //f的值作为函数值返回
}
 
运行情况如下:
please input an integer10
10!=3628800
许多问题既可以用递归方法来处理,也可以用非递归方法来处理。在实现递归时,在时间和空间上的开销比较大,但符合人们的思路,程序容易理解。

阅读(2965) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册