C语言中关于阶乘的算法
#include
#include
#include
#pragma warning (disable:4996)
struct Ord
{
int n;
long ordor;
};
long fun(int n)
{
static struct Ord old={0,1};
int i;
if(n==old.n)
return (old.ordor);
if(n>old.n)
for(i=old.n+1;
i<=n;
i++)
old.ordor*=i;
else
for(i=old.n;
i>n;
i--)
old.ordor/=i;
old.n=n;
return (old.ordor);
}
main( )
{
int i,n;
for(i=0;
i<5;
i++)
{
n=rand()%10;
printf("%d%ld\n",n,fun(n));
}
}
1.rand()产生一个1-100之间的随机数
2.这里要注意使用的是static静态的结构体,说明数值都是背保存下来的
3.每次进行判断产生的随机数是多少,如果随机数与原来计算过得随机数是相等的话,直接返回结果。如果n大于原来结构体内old.n的值的话,则不需要从1累加,直接从原来的结果进行累加。
举例:如果计算过4!以后,再求5!,那么只要在4的基础上乘以5就行,如果要求2!的话,则将4!除以2,再除以3.
【C语言中关于阶乘的算法】这样一来可以减少计算机的工作量,提高计算机的运行速度。
推荐阅读
- 夜游宫|夜游宫 心语
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 子龙老师语录
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 小学英语必考的10个知识点归纳,复习必备!
- 醒不来的梦