求阶乘的两种方法

原创 2013年12月06日 11:06:59

1.使用静态局部变量static

静态局部变量在函数调用结束之后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保留上一次函数调用结束时的值。

静态局部变量赋初值实在编译时进行的,即只赋初值一次,在程序运行时它已有初值。

code:

#include<iostream>
using namespace std;
int fac(int n)
{
	static int f=1;
	f=f*n;
	return f;
}
int main()
{
	int i;
	for(i=1;i<=5;i++)
	{
		cout<<i<<"!="<<fac(i)<<endl;
	}
	return 0;
}

print:

/*
1!=1
2!=2
3!=6
4!=24
5!=120
*/

2.使用递归的方法

首先进行退出递归的判断,然后进行递归

code:

#include<iostream>
using namespace std;
int fac(int n)
{
	if(n<0) return 0;
	if(n==0||n==1)return 1;
	if(n>1)
	{
		return n*fac(n-1);
	}
}
int main()
{
	int i;
	for(i=1;i<=5;i++)
	{
		cout<<i<<"!="<<fac(i)<<endl;
	}
	return 0;
}

print:

/*
1!=1
2!=2
3!=6
4!=24
5!=120
*/




版权声明:本文为博主原创文章,未经博主允许不得转载。

阶乘和阶乘逆元

瞬间移动有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第nn行第mm列的格子有几种方案,答案对10...
  • kiwi_berrys
  • kiwi_berrys
  • 2017年02月02日 11:30
  • 703

《C语言及程序设计》实践参考——求阶乘函数

返回:贺老师课程教学链接  项目要求【项目4-求阶乘函数】(1)请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。int mai...
  • sxhelijian
  • sxhelijian
  • 2015年04月22日 11:03
  • 1974

【C语言】求阶乘与阶乘之和

中学我们都学习了阶乘的求法,比如要求整数n的阶乘,则n!=n×(n-1)×(n-2)×…×2×1。现在有两个问题,要用C语言编写程序求n的阶乘,以及求1!+2!+3!…+n!,该如何解决呢?   问...
  • Sunshine_R9H15Chen
  • Sunshine_R9H15Chen
  • 2017年11月11日 16:14
  • 477

数据结构示例之阶乘计算

以下为阶乘计算的简单示例: 1.用c语言实现的版本 #include"stdio.h" int main() { int Data[40]; int Digit; int i,j,r,k; ...
  • chinawangfei
  • chinawangfei
  • 2016年10月25日 15:13
  • 373

算法实现求n的阶乘(防止溢出)

求大整数n阶乘,在找工作笔试和面试的过程中,不止一次遇到这个问题,用一个for循环迭代出的结果肯定是不行的,即直接用int,默认是32位,它能表示的最大值为2,147,483,647,但是12的阶乘为...
  • liukaiyu_ak
  • liukaiyu_ak
  • 2016年11月03日 22:34
  • 1436

求10000以内n的阶乘

经过我N天的努力,终于把大整数的阶乘的一个算法看懂了!什么智商嘛,打击死我自己了。什么是大整数的阶乘呢,就是结果无论用C++语言中的哪一种数据类型都不能保存的。既然不能用一种数据类型保存,那么只能想其...
  • gaoshou7126
  • gaoshou7126
  • 2014年07月18日 16:34
  • 2803

C语言 递归方法调用函数计算n!

#include int fun(int n) //定义函数 { if(n==0||n==1) { n=1; } else { n...
  • a1b2c3d4123456
  • a1b2c3d4123456
  • 2015年06月30日 23:09
  • 6048

递归<一> --- 求阶乘

递归的简单应用:求阶乘
  • kyle0349
  • kyle0349
  • 2016年07月06日 08:49
  • 505

C语言编程之递归求阶乘

题目: 利用递归方法实现一个函数,该函数能够实现n的阶乘,即 n! = n*(n-1)*…*3*2*1; #include int factorial(int n) { if(n == 1) ...
  • ZH0314
  • ZH0314
  • 2017年07月20日 19:22
  • 540

hdoj GCC 3123 (大数阶乘取余&转换)

GCC Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Su...
  • yanghui07216
  • yanghui07216
  • 2015年12月05日 00:11
  • 523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求阶乘的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)