當前位置:股票大全官網 - 財經新聞 - 新浪財經斐波那契

新浪財經斐波那契

因為f【100】是壹個很大的數,所以int根本無法表示,應該通過大數相加來實現。

# include & ltstdio.h & gt

# include & ltstring.h & gt

void sum(字符a【】,字符b【】)

{

int i,n,k;

for(I = strlen(b)-1,k = 0;我& gt=0;k++,i -)

{

a【k】+= b【I】-“0”;

n = k;

while(a【n】》;'9')

{

a【n+1】+=(a【n】-‘0‘)/10;

a【n】=(a【n】-‘0’)% 10+‘0’;

n++;

}

}

}

int main()

{

char a【101】,b【101】,fib【500】【201】= { 0 },ch;

int i,j,k,c,n;

strcpy(fib【1】,“1“);

strcpy(fib【2】,“2“);

fib【0】【0】=‘1‘;

for(I = 1;我& lt101;i++)

fib【0】【I】=‘0‘;

for(I = 3;我& lt500;i++)

{

for(j = 0;j & lt201;j++)

fib【I】【j】=‘0‘;

}

for(I = 3;;i++)

{

sum(fib【I】,fib【I-1】);

sum(fib【I】,fib【I-2】);

for(j = 200;fib【I】【j】= =‘0‘;j-);

fib【I】【j+1】=‘\ 0‘;

for(k = 0;k & lt= j;k++,j -)

{

ch = fib【I】【k】;

fib【I】【k】= fib【I】【j】;

fib【I】【j】= ch;

}

if(strlen(fib【I】)& gt;100 | |(strlen(fib【I】)= = 101 & amp;& ampstrcmp(fib【I】,fib【0】)& gt;=0))

打破;

}

n = I;

for(I = 0;我& lt100;i++)

{

printf(“fib【% d】= % s \ n“,I,fib【I】);

}

/* while(scanf(“% s % s“,a,b)!= EOF & amp& amp(strcmp(a,“0“)!= 0 | | strcmp(b,“0“!=0))

{

c = 0;

for(I = 1;我& lt= n;i++)

{

if(strcmp(fib【I】,a)& gt;= 0 & amp& ampstrlen(fib【I】)= = strlen(a)| | strlen(fib【I】)& gt;strlen(a))

if(strcmp(b,fib【I】)& gt;= 0 & amp& ampstrlen(b)= = strlen(fib【I】)| | strlen(b)& gt;strlen(fib【I】))

c++;

}

printf(“% d \ n“,c);

}*/

}