vc++处理数据溢出,求高手解!

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:02:39
做练习题时求fibonacci数列的第n项
第n项记为:fib(a,b,n)递归定义如下:
fib(a,b,1)=a
fib(a,b,2)=b
fib(a,b,n)=fib(b,a+b,n-1) (n>2)
我的程序为:
#include<stdio.h>
int fib(int a,int b,int n)
{
if(n==1) return a;
else if(n==2) return b;
else return fib(b,a+b,n-1);
}

void main()
{
int x,a,b,n;
scanf("%d%d%d",&a,&b,&n);
x=fib(a,b,n);
printf("%d",x);
}
当n过大时就无法处理了,要能算到五千!请求帮助!

刚才,因为拷贝了fib(1,1,5000)的值,被百度审核掉了,换个账号帖源码

下面这个程序是根据我以前的计算10000!的程序修改的
/*
* fib.c
*/
#include <stdio.h>

/*
long fib(long a,long b,long n)
{
if(n==1) return a;
if(n==2) return b;
return fib(a,b,n-1) + fib(a,b,n-2);
}
*/

void main()
{
char a[9999];
char b[9999];
char c[9999];

int flag=0;
int i,k=0;
int tmp;
long A,B,N;

printf("Please input A,B,N\n");
scanf("%ld,%ld,%ld", &A, &B, &N);

memset(a,0,9999);
memset(b,0,9999);
memset(c,0,9999);

/*
if(N<46)
{
printf("f(a,b,N)=%ld\n",fib(A,B,N));
printf("\nPress any key to exit.\n");
getch();
return;
}
*/
if(N==1)
{
printf("f(a,b,N)=%ld\n",A);
printf("\nPress any key to exit.\n");
getch();
return;
}<