常见C语言面试题之八:数组实现大数阶乘

本文介绍了一种使用C++实现的大数阶乘计算方法。通过动态数组存储大数,并采用逐位乘法和进位处理的方式,实现了计算任意大小整数的阶乘的功能。该方法适用于需要处理大数运算的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6. void factorial(int x){
  7.     int re[1000],len=1,i,carry;
  8.     re[0]=1;   //初始re[0]赋值1
  9.     for(int mul=2;mul<=x;mul++){   //阶乘从2开始循环
  10.         for(i=0;i<len;i++)   //初步计算,临时结果的每一位都乘以i  
  11.             re[i]*=mul;
  12.         carry=0;   //进位值
  13.         for(i=0;i<len;i++){   //循环进位
  14.             re[i]+=carry;
  15.             carry=re[i]/10;
  16.             re[i]%=10;
  17.         }
  18.         while(carry>0){   //最高位进位
  19.             re[len++]=carry%10;
  20.             carry/=10;
  21.         }
  22.     }
  23.     for(i=len-1;i>=0;i--)
  24.         cout<<re[i];
  25.     cout<<endl;
  26. }
  27. int _tmain(int argc, _TCHAR* argv[])
  28. {
  29.     factorial(100);
  30.     return 0;
  31. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值