2011年计算机二级C++辅导实例编程(10)

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  大整数阶乘的算法思路

  这里的大整数指大于500以上的整数,当然更大也可以。由于整数阶乘递增的很快,远大于指数式递增,对于小整数,比如20,30左右,可以直接使用比如递归的方式进行,这很基本。

  但是当整数较大时,阶乘的结果很大,远非一个int或者long就能存的下的,比如1000的阶乘结果有上千位。

  所以大整数阶乘设计的关键点就是存储大整数,当选择了存储大整数,那么整数的乘法运算也不能再依靠*了,所以还要重新设计大整数的惩罚运算。

  上面是我的设计思路。网上找过相关的文章,有高手以4行代码完成了该算法,确实佩服!当然这涉及了算法的优化,不管那么多了,这里要的就是以尽量清晰地思路快速设计该算法,这是使用了STL标准库的容器。

  下面是我的算法代码,直接贴这里了,注意看相关的注释:

  #include

  #include

  using namespace std;

  // 传入整数:int,和整数-1的阶乘结果,进行相乘的结果

  // 结构依然存储到容器中

  void Calc(int num,vector &calcresult)

  {

  vector tempnum;

  vector rest;

  // 将传入的int拆分之后保存到容器中

  do

  {

  tempnum.push_back(num % 10);

  num = num / 10;

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答