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 ...
随机推荐
- vs2008 下编译jrtplib-3.9.0成功
jrtplib-3.9.0的编译,终于搞通了.网上搜集了很多资料,自己也调试了很久. 首先,jrtplib-3.9.0是什么不用多说吧,它是一个很牛的老外用C++写的一个开源的RTP协议库,用它可以进 ...
- centos7上安装与配置Tomcat7(整理篇)
1.检查tomcat7是否已经安装 rpm -qa | grep tomcat ps -ef | grep tomcat 第一条命令查看是用rpm安装过tomcat,由于我们倾向于安装解压版的tomc ...
- DB2JAVIT:RC=9505解决方案
DB2JAVIT:RC=9505解决方案 题记:WIN7下装DB2,启动任务中心.控制中心报DB2JAVIT:RC=9505. 解决方案:进入(计算机—>管理—>本地用户和组)把用户加入到 ...
- wordpress 更改 "Home"为"首页"
要怎麼更改wordpress的 menu上 那一直顯示著"首頁"的頁籤呢這問題我實在是找好久終於給我找到 在 wp-includes 的 post-template.php 這檔案 ...
- uboot总结:uboot配置和启动过程2(mkconfig分析)
说明:文件位置:在uboot的目录下,文件名为:mkconfig.本身是一个脚本文件. 它的主要作用的是: (1)创建一个重要的符号链接 (2)创建一个config.mk文件(在include目录下) ...
- if exists和if not exists关键字用法
在sql语名中,if not exists 即如果不存在,if exists 即如果存在. 下面学习下二者的用法. a,判断数据库不存在时 代码示例: if not exists(select * f ...
- Xamarin Mono错误: unable to find explicit activity class
unable to find explicit activity class在android开发很常见,网上一般是java的解决办法,对我们这些xamariner就无语了. xamarin中用attr ...
- Node.js全局对象
Node.js的全局对象是具有全局性的,它们可在所有的模块中应用.我们并不需要包括这些对象在应用中,而可以直接使用它们.这些对象的模块,函数,字符串和对象本身,如下所述. __filename __f ...
- BZOJ 2432 兔农
Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...
- Election Time
Election Time Time Limit: 1000MS Memory limit: 65536K 题目描述 The cows are having their first election ...