来总结下求阶乘的各种方法哈。

写在最前:①各个代码仅仅是提供了求阶乘的思路,以便在实际须要时再来编码,代码并不健壮!②各个程序都在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;
}

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

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

欢迎拍砖!

C++ 求阶乘 四种方法的更多相关文章

  1. Java用四种方法实现阶乘n! (factorial)

    1. 引言 实现阶乘的方法很多,这边介绍四种方法,分别是递归,尾递归,循环和BigDecimal. 2. 代码 public class Test { public static void main( ...

  2. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  3. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  4. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  5. 两个变量交换的四种方法(Java)

    对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...

  6. 织梦DedeCMS模板防盗的四种方法

    织梦(DedeCMS)模板也是一种财富,不想自己辛辛苦苦做的模板被盗用,在互联网上出现一些和自己一模一样的网站,就需要做好模板防盗.本文是No牛收集整理自网络,不过网上的版本都没有提供 Nginx 3 ...

  7. 让一个图片在div中居中(四种方法)

    第一种方法: <div class="title"> <div class="flag"></div> <div cl ...

  8. 运行jar应用程序引用其他jar包的四种方法

    转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...

  9. java中定时器的四种方法

    package com.lid; import java.util.Calendar; import java.util.Date; import java.util.Timer; import ja ...

随机推荐

  1. Codeforces 543C Remembering Strings(DP)

    题意比较麻烦 见题目链接 Solution: 非常值得注意的一点是题目给出的范围只有20,而众所周知字母表里有26个字母.于是显然对一个字母进行变换后是不影响到其它字符串的. 20的范围恰好又是常见状 ...

  2. Java多线程:Semaphore

    Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类 实例代码: // 允许2个线程同时访问 final Semaphore semaphore = new Semaphore(2 ...

  3. 极简主义,对逻辑操作符||和&&深度运用的理解

    丧心病狂的代码压缩好像违背了愉快阅读的本真,所以刨根问底想要了解个究竟,最后发现这不只是前端大牛装逼卖萌的绝技,也是代码洁癖爱好者的利器,毕竟这样看上去确实蛮优雅的; 一开始,我们接触到的代码是这样的 ...

  4. Bootstrap_表单_图像

    在Bootstrap框架中对于图像的样式风格提供以下几种风格: 1.img-responsive:响应式图片,主要针对于响应式设计2.img-rounded:圆角图片3.img-circle:圆形图片 ...

  5. DOM对象控制HTML无素——详解2

    节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...

  6. JSP语法

    第3章  JSP语法 [本章专家知识导学] JSP是建立在Java语言基础上的一种Web程序设计语言,具有自己特有的用法和指令.本章首先介绍JSP页面的程序结构,然后讲述JSP程序中经常用到基本的面向 ...

  7. IOS网络编程:HTTP

    IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...

  8. 转:PHP 5.4中的traits

    原文来自于:http://www.cnblogs.com/thinksasa/archive/2013/05/16/3081247.html PHP 5.4中的traits,是新引入的特性,中文还真不 ...

  9. 【面试】惠普IT电面

    1.英文自我介绍 一定要事先准备,逻辑要清晰 2.英文项目介绍

  10. [原创]leet code - path sum

    ;            ;                ;                            }        }        ;            }};