zoukankan      html  css  js  c++  java
  • 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;
    }

                 分析:一直觉得递归技术非常奇妙。尽管在时间和空间方面都不是非常理想,但的确同意我们利用了以“模糊”的方式编程。对每一个细节不必锱铢必较了。

                 写在最后:程序是个非常奇妙的东西。编程是个非常重要的能力。

                 欢迎拍砖!
       

  • 相关阅读:
    一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
    java: Compilation failed: internal java compiler error
    新建IEDA项目,运行跳出页面404
    windows版 nvm 1.1.7 安装(填坑)
    向量法求三角形垂点
    error C4430:missing type specifier 解决错误
    QML 从无到有 3 (自动更新)
    QML 从无到有 2 (移动适配)
    QML 从无到有 (基础)
    c++ builder 2010 错误 F1004 Internal compiler error at 0x9740d99 with base 0x9
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3805918.html
Copyright © 2011-2022 走看看