递归程序C语言源代码.docx

上传人:b****3 文档编号:24720968 上传时间:2023-05-31 格式:DOCX 页数:15 大小:16.32KB
下载 相关 举报
递归程序C语言源代码.docx_第1页
第1页 / 共15页
递归程序C语言源代码.docx_第2页
第2页 / 共15页
递归程序C语言源代码.docx_第3页
第3页 / 共15页
递归程序C语言源代码.docx_第4页
第4页 / 共15页
递归程序C语言源代码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

递归程序C语言源代码.docx

《递归程序C语言源代码.docx》由会员分享,可在线阅读,更多相关《递归程序C语言源代码.docx(15页珍藏版)》请在冰豆网上搜索。

递归程序C语言源代码.docx

递归程序C语言源代码

#include"stdafx.h"

#include

#include

usingnamespacestd;

#defineMAXL250

classbig_num

{

public:

intnum[MAXL];

intlength;

boolmark;

voidinit()

{

inti;

for(i=0;i

mark=false;

length=1;

}

voidturn()

{

inti;

inta,b,c;

for(i=0;i

{

if(num[i]==0)break;

if(num[i]%10000>0)

{

num[i+1]=num[i]/10000;

num[i]=num[i]%10000;

}

}

}

voidleng()

{

inti;

length=1;

for(i=250;i>0;i--)

{

if(num[i-1]!

=0){length=i;break;}

}

}

booloperator<(big_numn)

{

inti;

if(length

if(length>n.length)returnfalse;

for(i=length-1;i>=0;i--)

{

if(num[i]>n.num[i])returnfalse;

if(num[i]

}

returnfalse;

}

booloperator<=(big_numn)

{

inti;

if(length

if(length>n.length)returnfalse;

for(i=length-1;i>=0;i--)

{

if(num[i]>n.num[i])returnfalse;

if(num[i]

}

returntrue;

}

big_numoperator*(big_numobj)

{

big_numother;

big_numa;

inti,j;

intc=0;

intk;

boolmak;

mak=false;

if(*this

{

a=*this;*this=obj;obj=a;mak=true;

}

for(i=0;i

for(j=0;j

{

c=other.num[i+j];

other.num[i+j]=(c+num[j]*obj.num[i])%10000;

other.num[i+j+1]+=(c+num[j]*obj.num[i])/10000;

}

other.leng();

if(mak)

{

a=*this;*this=obj;obj=a;

}

if(mark==obj.mark)other.mark=false;

elseother.mark=true;

returnother;

}

big_numoperator+(big_numobj)

{

big_numother;

inti;

intc=0;

intk;

boolm1,m2;

if(mark==obj.mark)

{

for(i=0;i

{

k=(num[i]+obj.num[i]+c)%10000;

c=(num[i]+obj.num[i]+c)/10000;

other.num[i]=k;

}

other.leng();

other.mark=mark;

returnother;

}

else

{

m1=mark;m2=obj.mark;

mark=false;obj.mark=false;

other=*this-obj;

mark=m1;obj.mark=m2;

if(*this

else

{

if(other.length==1&&other.num[0]==0)other.mark=false;

elseother.mark=mark;

}

returnother;

}

}

big_numoperator-(big_numobj)

{

big_numother,a;

inti;

intc=0;

intk;

boolmak;

mak=false;

if(mark==obj.mark)

{

if(*this

{

a=*this;*this=obj;obj=a;mak=true;

}

for(i=0;i

{

if(i>length&&i>obj.length&&num[i]==0&&obj.num[i]==0)break;

other.num[i]=num[i]-obj.num[i];

}

other.leng();

for(i=0;i

{

if(other.num[i]<0)

{

if((i+1)

other.num[i+1]--;

}

}

if(mak)

{

a=*this;*this=obj;obj=a;

}

if(*this

mark;

elseother.mark=mark;

if(other.num[other.length-1]<0)other.num[other.length-1]=-other.num[other.length-1];

if(other.length==1&&other.num[0]==0)other.mark=false;

returnother;

}

else

{

obj.mark=mark;

other=*this+obj;

returnother;

}

}

big_num()

{

init();

}

/*big_numoperator=(stringstr)

{

big_numn;

intlen,i,mark,tem,k,j,sum;

len=str.length();

if(str[0]=='-')n.mark=true;

elsen.mark=false;

mark=len/4;

if(len>mark*4)mark++;

n.length=mark;

for(i=0;i

{

tem=1;

sum=0;

for(j=len-(i*4)-1;j>len-(i+1)*4-1&&j>=0+n.mark;j--)

{

sum+=(str[j]-'0')*tem;

tem*=10;

}

n.num[i]=sum;

}

returnn;

}*/

 

};

 

big_numtobignum(stringstr)

{

big_numn;

intlen,i,mark,tem,k,j,sum;

len=str.length();

if(str[0]=='-')n.mark=true;

elsen.mark=false;

mark=len/4;

if(len>mark*4)mark++;

n.length=mark;

for(i=0;i

{

tem=1;

sum=0;

for(j=len-(i*4)-1;j>len-(i+1)*4-1&&j>=0+n.mark;j--)

{

sum+=(str[j]-'0')*tem;

tem*=10;

}

n.num[i]=sum;

}

n.leng();

returnn;

}

stringtstring(big_numn)

{

stringst,str="";

inti;

intm,tem;

boolmark;

chara1,a2,a3,a4,a5;

/*if(n.length==1&&n.num[0]==0)return"0";*/

m=n.num[n.length-1];

tem=10;

for(i=0;i<4;i++)

{

a1=m%10+'0';

m=m/10;

str=a1+str;

}

if(n.mark)str='-'+str;

for(i=n.length-2;i>=0;i--)

{

a1=n.num[i]/1000+'0';

a2=(n.num[i]/100)%10+'0';

a3=(n.num[i]/10)%10+'0';

a5=n.num[i]%10+'0';

str=str+a1;

str+=a2;str+=a3;str+=a5;

}

mark=false;

for(i=0;i

{

if(str[i]!

='0'&&!

mark)mark=true;

if(mark)st=st+str[i];

}

returnst;

}

big_numdiv(big_numthiss,big_numobj)

{

big_numother,n1,n2;

stringst1,st2,sm,st3="";

sm="";

chars;

boolm1,m2,mak;

intsum,i;

m1=thiss.mark;m2=obj.mark;

if(thiss

thiss.mark=false;obj.mark=false;

st1=tstring(thiss);

st2=tstring(obj);

n2=tobignum(st2);

i=0;

while

(1)

{

if(st3=="")

{

st3+=st1[i];

i++;

if(i>st1.length())break;

}

/*if(st3=="0")

{

st3="";

sm+='0';

st3+=st1[i];

i++;

if(i>st1.length())break;

}

if(st3!

="")

{*/

n1=tobignum(st3);

/*}elsen1=tobignum("0");*/

 

if(n2<=n1)

{

sum=0;

while(n2<=n1)

{

n1=n1-n2;

sum++;

}

s=sum+'0';

sm+=s;

st3=tstring(n1);

st3=st3+st1[i];

i++;

if(i>st1.length())break;

}

else

{

sm+='0';

st3=st3+st1[i];

i++;

if(i>st1.length())break;

}

}

other=tobignum(sm);

if(m1==m2)other.mark=false;

elseother.mark=true;

other.leng();

returnother;

}

voidoutput(big_numn)

{

inti;

intm;

if(n.mark)cout<<'-';

cout<

for(i=n.length-2;i>=0;i--)

{

if(n.num[i]==0){cout<<"0000";continue;}

if(n.num[i]/10==0){cout<<"000"<

if(n.num[i]/100==0){cout<<"00"<

if(n.num[i]/1000==0){cout<<"0"<

elsecout<

}

}

big_numinput()

{

stringstr;

big_numn;

intlen,i,mark,tem,k,j,sum;

cin>>str;

len=str.length();

if(str[0]=='-')n.mark=true;

elsen.mark=false;

mark=len/4;

if(len>mark*4)mark++;

n.length=mark;

for(i=0;i

{

tem=1;

sum=0;

for(j=len-(i*4)-1;j>len-(i+1)*4-1&&j>=0+n.mark;j--)

{

sum+=(str[j]-'0')*tem;

tem*=10;

}

n.num[i]=sum;

}

returnn;

}

 

int_tmain(intargc,_TCHAR*argv[])

{

big_numn,a,c;

stringstr;

while

(1)

{

n=input();

a=input();

c=n+a;

output(c);

cout<

c=n-a;

output(c);

cout<

c=n*a;

output(c);

cout<

c=div(n,a);

output(c);

cout<

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1