大数阶乘的AS3与C++版本

简介: 最近在面试flash的时候,出了道题目:用程序求1000的阶乘。 说出这个问题的时候,有两种情况,一种会问:“阶乘是什么?”,另外一种可能会想,这个结果会走出Number型能表述的上限。   之前业余的时候写了两个版本:AS3、C++,C++是大二学过后再没碰过了,写的时候查了资料 AS3版本的大数阶乘: package{import flash.

最近在面试flash的时候,出了道题目:用程序求1000的阶乘。

说出这个问题的时候,有两种情况,一种会问:“阶乘是什么?”,另外一种可能会想,这个结果会走出Number型能表述的上限。

 

之前业余的时候写了两个版本:AS3、C++,C++是大二学过后再没碰过了,写的时候查了资料

AS3版本的大数阶乘:

package
{
import flash.display.Sprite;

public class AlgorithmDemo extends Sprite
{
public function AlgorithmDemo()
{
initView();
}

private function initView():void
{

var num:uint = 5;

var val:String = factorial(num);

trace(num + "! = " + val);

}

private function factorial(n:int):String
{
var a:Array = [1];


for (var i:int = 1; i <=n; i++)
{
for (var j:int = 0, c:int = 0; j < a.length || c != 0; j++)
{
var m:int = (j < a.length) ? (a[j] * i + c) : c;
a[j] = m % 10;
c = m / 10;
}
}

return a.reverse().join("");
}
}
}

C++版本的:

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

int main() {
vector<int> myVector;
vector<int>::iterator it;

stringstream ss;
string str;

int n;

cout<<"请输入您需要计算的阶乘值(1~1000):";
cin>>n;

if(n <= 0 || n > 1000) {
cout<<"输入的值不符合要求。\n";
system("pause");
return 0;
}



myVector.push_back(1);

for (int i = 1; i <= n; i++) {
for (int j = 0, c = 0; j < myVector.size() || c != 0; j++) {
int m = (j < myVector.size()) ? (myVector[j] * i + c) : c;
int p = m % 10;

if (j < myVector.size()) {
myVector[j] = p;
}
else {
myVector.push_back(p);
}

c = m / 10;
}
}

reverse(myVector.begin(), myVector.end());

for (it = myVector.begin(); it != myVector.end(); ++it) {
ss<<*it;
}

str = ss.str();


cout<<n<<"的阶乘结果为:"<<str<<"\n";

system("pause");
return 0;
}

运行的结果:
image

 

这里有一个JavaScript版本的大数阶乘

目录
相关文章
|
8月前
|
C++
二叉树进阶面试题(精华总结)【C++版本】
二叉树进阶面试题(精华总结)【C++版本】
|
8月前
|
算法 API 计算机视觉
[opencv学习笔记] jiazhigang 30讲源码C++版本(含Makefile)
[opencv学习笔记] jiazhigang 30讲源码C++版本(含Makefile)
86 0
|
编译器 程序员 C++
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
429 0
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
|
3月前
|
Linux 编译器 测试技术
【C++】CentOS环境搭建-快速升级G++版本
通过上述任一方法,您都可以在CentOS环境中高效地升级G++至所需的最新版本,进而利用C++的新特性,提升开发效率和代码质量。
226 64
|
3月前
|
Linux 编译器 测试技术
【C++】CentOS环境搭建-快速升级G++版本
通过上述任一方法,您都可以在CentOS环境中高效地升级G++至所需的最新版本,进而利用C++的新特性,提升开发效率和代码质量。
282 63
|
5月前
|
缓存 C++ Windows
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
|
7月前
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
402 2
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C++17?
Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理) centos7直接yum安装的那个gcc版本为4.8.5,对于大多数的需求来说都是低了。系统安装镜像里的那个版本也是4.8.5。 在g++ 7 以上的版本中添加了对c++17 的支持,所以为了工作需要现在需要升级到高版本。
1419 1
|
8月前
|
存储 C++ Python
C++版本netCDF在Visual Studio中的部署
【2月更文挑战第20天】本文介绍在Windows电脑的Visual Studio软件中,配置C++语言最新版netCDF库的方法~
142 3
C++版本netCDF在Visual Studio中的部署
|
8月前
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
348 1