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;
}
分析:一直觉得递归技术非常奇妙。尽管在时间和空间方面都不是非常理想,但的确同意我们利用了以“模糊”的方式编程。对每一个细节不必锱铢必较了。
写在最后:程序是个非常奇妙的东西。编程是个非常重要的能力。
欢迎拍砖!
C++ 求阶乘 四种方法的更多相关文章
- Java用四种方法实现阶乘n! (factorial)
1. 引言 实现阶乘的方法很多,这边介绍四种方法,分别是递归,尾递归,循环和BigDecimal. 2. 代码 public class Test { public static void main( ...
- 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法
1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...
- 【Java必修课】通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- 通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- 两个变量交换的四种方法(Java)
对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...
- 织梦DedeCMS模板防盗的四种方法
织梦(DedeCMS)模板也是一种财富,不想自己辛辛苦苦做的模板被盗用,在互联网上出现一些和自己一模一样的网站,就需要做好模板防盗.本文是No牛收集整理自网络,不过网上的版本都没有提供 Nginx 3 ...
- 让一个图片在div中居中(四种方法)
第一种方法: <div class="title"> <div class="flag"></div> <div cl ...
- 运行jar应用程序引用其他jar包的四种方法
转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...
- java中定时器的四种方法
package com.lid; import java.util.Calendar; import java.util.Date; import java.util.Timer; import ja ...
随机推荐
- Vim简明教程【CoolShell】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- php基础知识【函数】(4)时间date
一.time() -- 返回当前的 Unix 时间戳 $nextWeek = time() + (7 * 24 * 60 * 60); echo 'Next Week: '. date('Y-m-d' ...
- jquery 自定义tab
<!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js&qu ...
- CHROME下载地址
Chrome官方独立中文安装包下载地址 一般我们安装Google Chrome浏览器都是访问 http://www.google.com/chrome/?hl=zh-CN 然后下载运行ChromeSe ...
- EasyUI篇のico
所有图标位置: /themes/icons css引用位置: /themes/icon.css 可自行添加16*16的小图片放在icons中,icon.css代码添加即可 例如: .icon-logo ...
- HTML用法小摘录
一.网页地址栏上小图标标签添加写法: <link rel="Shortcut Icon" href="~/Content/ico/glasses.ico" ...
- IE7和IE8出现的计算判断问题
吸住底部菜单 IE7和IE8下会卡死的算法 ; } function fixedBar(){ var _height=$(this).height()+$(this).scrollTop(); var ...
- JSP页面的异常处理<转>
对于jsp页面错误处理这里大致有两种方式:一.在Web.xml中配置全局的错误异常处理 即凡是该项目下(即虚拟路径下的所有文件)的任意一个文件错误或者异常,都会跳到指定的错误处理页面. ...
- 利用Java反射机制完成XML到对象的解析
对于一些小批量的数据,如果采用数据库来存取的话,未免有点大题小作,使用XML文件是个不错的方法,尤其是在一些Web应用中,经常需要缓存一部分数据,如果将这些数据形成XML文件,解析后放入一个Hasht ...
- 【HDOJ】3442 Three Kingdoms
bfs+状态压缩.初始化数组的曼哈顿距离条件写错了,改了一下午. /* 3442 */ #include <iostream> #include <cstdio> #inclu ...