阶乘代码实现

今天一个问题提问:说知道乘法原理,但是不明白代码实现的。研究了一下,发现可以封装起来备用,所以记录下。
在这里插入图片描述
在这里插入图片描述
所以,后面我自己写了一遍:

int main()
{
    int Store[10000];
    Store[0] = 1;
    int every = 0;
    int M = 0;
    int digit = 1;
    int N = 5;
    if (N >= 0 && N <= 1000)//计算N的阶乘
    {
        for (int i = 1; i <= N; i++)//外循环  N
        {
            for (int j = 0; j < digit; j++)
            {
                /*内循环  当前结果乘以N
                    比如当前N是5,那么现在进来内循环的时候
                    Store[]这个数组中存放的是4!的值也就是24
                    不过是倒着存储的,也就是Store[0] = 4,
                    Store[1] = 2;然后接下来的计算就是让Store[0]
                    和Store[1]分别乘以5,4*5=20,所以Store[0]从4变成了0,
                    进位M = 2,别慌,这个for循环还没有完,因为digit现在是2,
                    所以需要再循环一次
                    则,Store[1]*5=2*5=10,然后加上进位M等于12;
                    那么Store[1] = 2,M = 1;
                    进入while循环,Store[2] = 1;
                    至此,Store[] = { "0","2","1" },
                    最后倒叙输出,得到N的阶乘 5!= 120.
                */
                every = Store[j] * i + M;
                Store[j] = every % 10;
                M = every / 10;
            }
            while (M != 0)
            {
                Store[digit] = M % 10;
                M = M / 10;
                digit++;
            }
        }
        for (int i = digit-1;i>=0;i--)
        {
            cout << Store[i];
        }
    }
    getchar();
    return 0;
}

希望对你也有所帮助哦~

只会C++啊
关注 关注
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++版本大数阶乘原理讲解及代码实现
07-10
### C++版本大数阶乘原理讲解及代码实现 #### 概述 在计算机科学领域,阶乘是一个常见的数学运算,表示为n! = n × (n-1) × ... × 1。对于较小的数值,如n ,普通的整型变量可以轻松处理。但当n值较大时,例如n >...
用VBS精确计算100的阶乘实现代码
09-05
上述代码中,`jx`函数通过循环乘法计算输入数字`x`的阶乘。然而,当x增大到如100时,这个方法会导致溢出,因为VBS的Integer或Long数据类型无法存储如此大的结果。 为了计算100的阶乘,我们需要使用一种能够处理大数...
用数组存储n的阶乘
zmm0628的博客
11-12 1280
#include<stdio.h> int main() { int sum[100]={}; int n; printf("please input a number aim to n!\n"); scanf("%d",&n); int i,j,m=1,temp=0; //i,j循环变量,temp进位标志,m代表数组长度 sum[0]=1; for(i=1;i<=n;i++) { //用到的每一位与i相乘 for(j=0;j<m;j++){
Java实现阶乘的计算(四种方法)
热门推荐
AD_CSY的博客
04-23 3万+
用Java实现阶乘的计算 Java入门练习 废话不多说,直接上代码。 import java.math.BigInteger; import java.util.ArrayList; public class doFactorial { public static void main(String[] args) { int number=5; System.out.prin...
【数据结构】递归之阶乘
l634007854的博客
10-07 189
#include <stdio.h> int main(void) { int val; int i,mult = 1,s; printf("请输入一个数字:"); printf("val="); scanf("%d",&val); for (int i = 1; i <= val; ++i) { mult = mult * i; } printf("%d的阶乘是:%d\n",val,mult);
计算阶乘代码
Tracy Mcgrady的专栏
03-23 2757
两种实现方式,递归和循环: int factorial(int n) {         if (n == 1) {                 return 1;         } else {                 return n * factorial(n-1);         } } int factorial(int n) {
有关阶乘阶乘的求和c语言代码。(学习日志)
m0_73426459的博客
10-11 1081
代码】有关阶乘阶乘的求和c语言代码。(学习日志)
Java中递归求阶乘代码实现
崔凯洋的博客
11-30 351
阶乘:所有小于及等于该数的正整数的积 n的阶乘:n!=n * (n-1) * ...*3 * 2 * 1 另一种写法 n!=n *(n-1)! 递归求阶乘代码: 明确递归结束的条件和递归的目的 package com.baidu; public class ChengJieCheng { public static void main(String[] args) { System.out.println(jiecheng(5)); } pub.
递归算法阶乘代码实现与非递归实现
weixin_30709929的博客
05-07 299
  求一个自然数n的阶乘,也非常适合用递归的方式实现。当然,所有的递归都可以用非递归的方式来实现,只是在代码结构上将显得啰嗦和复杂。现代编译器对递归函数的调用开销已经大幅优化,因此,对于类似汉诺塔等问题的求解,用递归实现非常简洁明了,并且易于阅读和理解。   本文给出自然数n的阶乘的递归与非递归求解算法代码实现语言为dart语言。 1 int factorial(int n) { ...
JavaScript使用递归和循环实现阶乘的实例代码
10-18
JavaScript实现阶乘的两种方法分别是通过递归(递归方法)和循环(循环方法)。阶乘通常表示为一个数的全部正整数乘积,例如5的阶乘写作5!,等于5×4×3×2×1=120。理解阶乘的概念和实现阶乘的方法对于学习计算机...
C语言 实现N阶乘的程序代码
01-20
代码如下所示: 代码如下:#include <stdio>#include <stdlib>#define N 10 //算N的阶乘int main(){ //数组 1位 1! int ary[N] = {1, 1}; int i, j; for (i = 2; i <= N; i++) { //各个下标的阶乘,第0位...
js代码-递归实现n的阶乘
07-14
在JavaScript编程语言中,"js代码-递归实现n的阶乘"是一个常见的算法问题,它涉及到函数的递归调用。阶乘是数学中的一个概念,表示一个正整数n的所有小于等于n且大于0的正整数的乘积。例如,5的阶乘(5!)就是5 × 4...
数据结构----递归算法阶乘
Big_xbc的博客
04-13 633
实践代码 /* 计算阶乘函数的递归算法,并给出n = 3时递归算法的执行过程。 */ #include <stdio.h> long Fact(int n){ int x; long y; if(n<0){ printf("error!"); return -1; } if(n==0){ return 1; }else{ x = n-1; y = Fact(x); //递归调用 return n*y; } } void main(voi.
C语言中union的用法
zyqash的博客
09-21 238
在C语言中,union(联合体)是一种特殊的复合数据类型,它允许多个不同的数据成员共享同一块内存空间。与struct(结构体)不同的是,union中的所有成员共用同一个内存地址,因此同时只能存储一个成员的值。
C++ STL中sort函数
weixin_43349440的博客
09-15 431
刷题中经常遇到,用于各种元素排序,可以自定义排序方式,vector、deque适用。详细讲解:https://zhuanlan.zhihu.com/p/36274119。,为避免QuickSort快排的递归调用带来过大的额外负荷,就改用。一旦分段后的数据量小于某个门槛。STL的sort算法
pyqt瀑布流布局
最新发布
weixin_54217201的博客
09-21 291
最近研究瀑布流布局,发现都是收费的,所以只能自己写算法写布局。所以啥都不说直接上代码
标准C++(二)
m0_63127040的博客
09-18 794
在C语言中定义的全局变量、函数、结构、联合、枚举、枚举值、宏都在全局作用域下,所以当项目比较庞大时,非常容易造成命名冲突(以模块名作前缀、后缀),所以C++中选择把全局作用域进行拆分成子作用域进行管理,这些子作用域就是作名字空间。把抽象结果(利用面向对象的思维模式,思考、观察出的结果),使用用C++的语法封装出一种类似结构的自定义数据类型(复合数据类型)。使用设计好的类(结构)这种数据类型,定义出的类变量在面向对象编程语言中被称为对象(结构变量),创建类对象的行为也被称为实例化对象。int id;
C++_map_set详解
2302_77644537的博客
09-16 1059
set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格的排序准则(默认是小于)进行排序。set在底层是用二叉搜索树(红黑树)实现的。map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。
TMS Scripter Crack TMS Scripter is a Delphi C++ Builder
q2315702359的博客
09-19 1029
  The integrated development environment or the IDE allows the users in process of creating script jobs during the runtime with the help of multiple cross-language scripts such as de Pascal and the Basics.  It has support for the cross-utilization of the s
c++高精度阶乘代码实现
07-14
C++实现高精度阶乘通常会使用大数运算库,因为标准库的 `std:: factorial` 函数无法处理大整数。一种常见的做法是使用递归结合数组或字符串来存储数字,并实现一个自定义的阶乘函数。以下是一个简单的高精度阶乘实现: ```cpp #include <vector> class BigInt { public: BigInt() : val(0) {} BigInt(int n) { for (int i = 0; n > 0; ++i) { val.push_back(n % 10); n /= 10; } if (n == 0) val.pop_back(); // remove leading zero } void multiply(BigInt other) { std::vector<int> result; int carry = 0; for (size_t i = 0; i < val.size() || i < other.val.size(); ++i) { int a = i < val.size() ? val[val.size() - 1 - i] : 0; int b = i < other.val.size() ? other.val[other.val.size() - 1 - i] : 0; result.push_back(carry + a * b); carry = result.back() / 10; result.back() %= 10; } if (carry > 0) result.push_back(carry); val.swap(result); } void factorial(int n) { if (n <= 1) { val.clear(); return; } BigInt fact = *this; // store 1 as the initial factor for (int i = 2; i <= n; ++i) { fact.multiply(BigInt(i)); } } private: std::vector<int> val; }; // Usage example: BigInt number; number = 10; // set the number you want to calculate its factorial number.factorial(); ``` 注意:这个例子仅用于教学目的,实际项目中可能需要更复杂的算法来优化性能和内存管理,比如使用Karatsuba算法或其他快速幂算法
写文章

热门文章

  • C++实现一个截图功能 1781
  • 【转载】状态机的三种实现模式(C语言) 1520
  • 中文乱码问题 1156
  • C++ switch case识别字符串数据问题 1046
  • 中文乱码之编码格式转换 543

分类专栏

  • 大话设计模式学习之路 4篇

最新评论

  • 邂逅寂静的苏州古镇

    追逐远方的梦: 哈哈,讲的好表情包,我也在苏州上学呢

最新文章

  • 中文乱码问题
  • 中文乱码之编码格式转换
  • std::async与std::future
2023年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只会C++啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王上海网站优化排名平台收费福田媒体网站优化在线推广湖南网站seo优化代理福建宁德网站首页优化佛山快速网站优化权7网站怎么优化商城类网站如何优化网站排名优化选择北京华网天下河南新站网站优化公司优化网站软件窗云速捷省钱三门峡seo网站优化淄博临淄张店营销型网站优化网站优化方式闵行区公司网站优化定制微信开发专业网站建设优化排名石家庄百度快照网站优化辉县网站搭建优化风水网站制作优化徐州手机网站优化桐城网站优化哪家靠谱做好网站内部优化东莞优化网站图片中国网站优化天气优化效果好吗济宁专业做优化的网站去哪里找珠宝行业网站优化网站优化案例例文网站诊断与优化进贤县网站seo优化排名网站站点地图优化网站导航到底该如何优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化