首页 > 代码库 > C++ 求阶乘 四种方法
C++ 求阶乘 四种方法
来总结下求阶乘的各种方法哈。
写在最前:①各个代码仅仅是提供了求阶乘的思路,以便在实际须要时再来编码,代码并不健壮!②各个程序都在1到10内測试正确。
代码一:
#include<iostream> using namespace std; int fac(int); int main() { int n; while(cin>>n) { cout<<n<<"!= "<<fac(n)<<endl; } return 0; } int fac(int x) { register int i,f=1; //定义寄存器变量 for(i=1;i<=x;i++) f*=i; return f; }
分析:该程序在每次输入n时,都会调用fac()来暴力计算以得到结果。
代码二:
#include<iostream> using namespace std; int a[11]; void init(); int main() { init(); int n; while(cin>>n) { cout<<n<<"!= "<<a[n]<<endl; } return 0; } void init() { int i; a[0]=1; for(i=1;i<=10;i++) a[i]=i*a[i-1]; }
分析:该程序利用了数组记录已得到的结果,并在计算下一个结果时利用了已得到的结果。
代码三:
#include<iostream> using namespace std; int fac(int); int main() { int i; for(i=1;i<=10;i++) { cout<<i<<"!= "<<fac(i)<<endl; } return 0; } int fac(int x) { static int f=1; //静态局部变量 f*=x; return f; }
分析:应该说该代码有用性最差,主要是来学习静态局部变量来了。
代码四:
#include<iostream> using namespace std; int fac(int); int main() { int n; while(cin>>n) { cout<<n<<"!= "<<fac(n)<<endl; } return 0; } int fac(int x) //递归函数 { int f; if(x==0 || x==1) f=1; else f=fac(x-1)*x; return f; }
分析:一直觉得递归技术非常奇妙。尽管在时间和空间方面都不是非常理想,但的确同意我们利用了以“模糊”的方式编程。对每一个细节不必锱铢必较了。
写在最后:程序是个非常奇妙的东西。编程是个非常重要的能力。
欢迎拍砖!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。