几种算法-----n的阶乘
问题描述:
输入一个正整数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 private static long RecursiveFac(long n) 2 { 3 if (n == ...
- 打卡第二十四天(问题:计算阶乘,打印九九乘法表,计算最大公约数的两种算法)
1.计算阶乘 这里给出递归和递推两种计算阶乘的程序. #include<stdio.h> //递归法计算阶乘 long factorial(int n) {if(n==0||n==1)re ...
- C语言常用13种算法附源码
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105147802 常 ...
- 冒泡排序,插入排序,选择排序三种算法的优劣
https://www.jianshu.com/p/9f724c880124 最近听了王争老师的数据结构与算法之美,大有获益,特写此博客与大家分享. 排序算法太多了,但大体可以归结于三类,冒泡排序,插 ...
- 详细总结组合排列的十余种算法实现
目录 •写在前面 •问题引入 •暴力枚举 循环枚举 递归枚举 回溯枚举 •深度优先搜索 前序遍历 中序遍历 后序遍历 •字典序 •二进制位运算 •带重复数字 •总结 •写在前面 排列组合的问题,如果没 ...
- 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...
出品 | AI科技大本营(ID:rgznai100) [导语]2019年8月22日,腾讯首个AI开源项目Angel正式发布3.0版本.Angel 3.0尝试打造一个全栈的机器学习平台,功能特性涵盖了机 ...
- 主宰这个世界的10种算法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 译者:claudio jandan.net/2014/05/31/ ...
- 总结2021面试中的常见14种算法套路
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器学习爱好者社区 编辑丨极市平台 导读 曾在 Fac ...
- Drug Target Review | 开发一种算法来预测药物性肝损伤
Elsevier和FDA之间合作将提出一种算法,用于准确预测药物诱发的肝损伤.Drug Target Review调查了该毒理学项目将为药物发现行业带来的好处. 确保候选药物进行毒性分析是药物开发过程 ...
最新文章
- 如何指定在Git上执行shell命令时使用的私有SSH密钥?
- 数据库并发一致性的问题
- flask第二十四篇——模板【6】自定义过滤器
- /etc/resolv.conf root用户下不能修改
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 复盘模型_组织内如何进行经验萃取复盘
- 在linux云服务器上运行Jar文件
- 【STM32】点灯仪式
- java文件复制(可过滤)
- 在NT系列操作系统里让自己“消失”
- 简单的优化mysql,提高查询性能
- 树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
- 【平面设计学习】Ai使用心得-扁平化制作
- GoF设计模式——适配器模式(C++实现)
- 直通车内测“定时上架”功能,商家可以提前锁定爆款了!
- 域服务器桌面墙纸,与大家分享windows 10 加域后统一桌面壁纸无法生效问题的解决办法...
- 搜索引擎优化(SEO) 基础常识
- 备战软考,怎样复习才最有效?
- 全选、删除、撤回、剪切、复制、粘贴、永久性删除、新建文件夹、启动任务管理器、退出的快捷键
- 自从用了企业微信,彻底摆脱表格写工作周报