大数阶乘问题的c++实现

本文介绍了如何使用C++解决大数阶乘问题。传统递归算法无法处理大数阶乘,由于存储限制,编程语言无法直接存储巨大乘积。解决策略是利用数组存储,逐位进行乘法运算,当数值超过10时进行进位处理,确保能计算并存储大数阶乘的结果。
摘要由CSDN通过智能技术生成

首先看一个简单的使用递归算法的n!程序:

#include<iostream>
using namespace std;
long fac(int);
int main(){
  int n;
  cout<<"请输入数字n,将输出n!:"<<endl;
  cin>>n;
  long y=fac(n);
  cout<<y<<endl;	
  return 0;
}

long fac(int n){
long f;
if(n<0){
	cout<<"errro,请输入正数!!"<<endl;
	return -1; 
}
else if(n==0)
    return 1;
else if(n==1) return 1;
	f=n*fac(n-1);
	return f;
}

显然,这个程序中的n是有上限的,当long占8字节的时候,f的取值范围是 -9223372036854775808~9223372036854775807;

所以诸如计算1000!的值是不可以用上述程序求解的。

当然,</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值