下载此文档

大数阶乘实习报告.docx


文档分类:高等教育 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
大数的阶乘
问题的描述:
对于一个数的阶乘算法应该是有好多中算法,运用递归调用函数、指针等都可以实现,但是对于运算结果的存储是一个问题,对于一个数比较小,我们可以用数组或者字符串来存储该结果,但是如果对于一个大数的运算时,那么则不仅仅是一个数组可以解决的,为了储存的方便,可以运用单链表来解决相应的存储问题。
求解思路:
首先定义一个单链表,用来存储数的结果。在计算的大数的阶乘时运用递归调用的方法来实现,在运算较大的数时,其中间变量也是存在该链表中,即在运算的同时完成存贮的过程,但是在存一个较大数的同时,考虑到位和进位的问题,在链表中定义了相应的函数来实现,即find和search和change函数。
采用的数据结构:
采用的数据结构为单链表。
程序实现说明:
class ChainNode //结点类的定义
class Chain //链表类的定义
bool IsEmpty() const {return first == 0;} //判断是否为空链表
int Length() const; //计算链表的长度
bool Find(int k, int& x); //取出第k个元素
int Search(const int& x) const; //寻找数据为x的元素
Chain& Change(int k, int x); //修改第k个元素的值
Chain& Delete(int k, int& x); //删除第k个元素
Chain& Insert(int k, const int& x); //在第k个元素后插入一个元素x
void Output(); //输出
//改为递归,才能先输出高位后输出低位
void Chain::OutputOne(const ChainNode* current)
//先做乘法
for(j = 0; j < j_end;j++)
{
(j,k);
k = i * k;
(j,k);
}
//然后处理进位
for(j = 0; j < j_end;j++)
{
(j,k);
if(k >= 1000)
{
if (j < j_end -1)
(j+1,l);
else
{
(j+1, 0); //增加高位
l = 0;
}
l += k/1000;
(j+1,l);
k = k % 1000;
(j,k);
程序清单:
// : 定义控制台应用程序的入口点。
//单链表的运用来实现大数的阶乘!!!!
#include ""
#include<iostream>
#include <>
using namespace std;

class ChainNode //结点类的定义
{
friend class Chain;
private:
int data; //数据元素域
ChainNode* link; //链指针域
};

class Chain //链表类的定义
{
public:

大数阶乘实习报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人2830622664
  • 文件大小0 KB
  • 时间2015-09-25
最近更新