问题描述:

输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。

算法 1 —–递归

long long   Factorial(long long  n)
{if(n==0)return 1;return Factorial(n-1)*n;
}void Test1()
{printf("%lld\n",Factorial(1));printf("%lld\n",Factorial(10));printf("%lld\n",Factorial(100));printf("%lld\n",Factorial(1000));printf("%lld\n",Factorial(10000));
}

算法2——循环

long long Factorial1(long long n)
{long long i=1,sum=1;while(i<=n){sum*=i;++i;}return sum;
}void Test2()
{printf("%lld\n",Factorial(1));printf("%lld\n",Factorial(10));printf("%lld\n",Factorial(100));printf("%lld\n",Factorial(1000));}

算法3——高精度算法

#define  MAX 1000
void  Mul(int n)
{int i=0,j=0;int s;//乘积int c=0;//进位//存放大整数aint arr[MAX]={0};arr[0]=1;for(i=2;i<=n;i++){for(j=0;j<MAX;j++){s=arr[j]*i+c;arr[j]=s%10;c=s/10;//进位}}for(i=MAX-1;i>=0;i--){//遇到不是0,开始输出if(arr[i])break;}for(j=i;j>=0;j--){//倒序输出printf("%d",arr[j]);}printf("\n");
}void Test()
{Mul(1);Mul(10);Mul(100);
}

算法3思路:

n!可能很大,算法1和算法2都存在溢出现象,故采用高精度算法:使用一个数组arr来表示一个大整数A,arr[0]表示A的个位,arr[1]表示A的十位,依次类推。
A乘以某一数K转化成A的每一位都乘以k,并且处理相应的位数
由于n的阶乘为1*2*3*………..*n,故数组的第一项应初始化为1,其余初始化为0(如图)

结果:

算法一:

算法二:

算法三:

几种算法-----n的阶乘相关推荐

  1. 算法:阶乘的五种算法

    背景 周末温习了一下递归相关的一些概念,本文先给出阶乘的五种算法. 第一种实现:递归 1 private static long RecursiveFac(long n) 2 { 3 if (n == ...

  2. 打卡第二十四天(问题:计算阶乘,打印九九乘法表,计算最大公约数的两种算法)

    1.计算阶乘 这里给出递归和递推两种计算阶乘的程序. #include<stdio.h> //递归法计算阶乘 long factorial(int n) {if(n==0||n==1)re ...

  3. C语言常用13种算法附源码

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105147802 常 ...

  4. 冒泡排序,插入排序,选择排序三种算法的优劣

    https://www.jianshu.com/p/9f724c880124 最近听了王争老师的数据结构与算法之美,大有获益,特写此博客与大家分享. 排序算法太多了,但大体可以归结于三类,冒泡排序,插 ...

  5. 详细总结组合排列的十余种算法实现

    目录 •写在前面 •问题引入 •暴力枚举 循环枚举 递归枚举 回溯枚举 •深度优先搜索 前序遍历 中序遍历 后序遍历 •字典序 •二进制位运算 •带重复数字 •总结 •写在前面 排列组合的问题,如果没 ...

  6. 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...

    出品 | AI科技大本营(ID:rgznai100) [导语]2019年8月22日,腾讯首个AI开源项目Angel正式发布3.0版本.Angel 3.0尝试打造一个全栈的机器学习平台,功能特性涵盖了机 ...

  7. 主宰这个世界的10种算法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 译者:claudio jandan.net/2014/05/31/ ...

  8. 总结2021面试中的常见14种算法套路

    ‍‍‍ 点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器学习爱好者社区 编辑丨极市平台 导读 曾在 Fac ...

  9. Drug Target Review | 开发一种算法来预测药物性肝损伤

    Elsevier和FDA之间合作将提出一种算法,用于准确预测药物诱发的肝损伤.Drug Target Review调查了该毒理学项目将为药物发现行业带来的好处. 确保候选药物进行毒性分析是药物开发过程 ...

最新文章

  1. 如何指定在Git上执行shell命令时使用的私有SSH密钥?
  2. 数据库并发一致性的问题
  3. flask第二十四篇——模板【6】自定义过滤器
  4. /etc/resolv.conf root用户下不能修改
  5. 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
  6. 复盘模型_组织内如何进行经验萃取复盘
  7. 在linux云服务器上运行Jar文件
  8. 【STM32】点灯仪式
  9. java文件复制(可过滤)
  10. 在NT系列操作系统里让自己“消失”
  11. 简单的优化mysql,提高查询性能
  12. 树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
  13. 【平面设计学习】Ai使用心得-扁平化制作
  14. GoF设计模式——适配器模式(C++实现)
  15. 直通车内测“定时上架”功能,商家可以提前锁定爆款了!
  16. 域服务器桌面墙纸,与大家分享windows 10 加域后统一桌面壁纸无法生效问题的解决办法...
  17. 搜索引擎优化(SEO) 基础常识
  18. 备战软考,怎样复习才最有效?
  19. 全选、删除、撤回、剪切、复制、粘贴、永久性删除、新建文件夹、启动任务管理器、退出的快捷键
  20. 自从用了企业微信,彻底摆脱表格写工作周报

热门文章

  1. OptiX OSN1500设备的ATM业务保护
  2. C.Emergency Evacuation(贪心)
  3. 2015美团网面试经验分享
  4. UML类图几种关系的总结
  5. 吉林大学计算机系2019录取分数线,吉林大学2019年录取分数线
  6. Python爬虫之scrapy高级(全站爬取,分布式,增量爬虫)
  7. Cockroach数据库初体验
  8. 两种闪存:NAND Flash与NOR Flash对比
  9. vue项目国际化(使用vue-i18n)
  10. 如何选择电机驱动器IC?