还是斐波拉契数列问题,求解怎样才能不溢出
我的代码如下,需要将SIZE改为40,但是我的程序会溢出,求大神指教
#include<stdio.h>
#define SIZE 18
int main() {
long long a[SIZE], x, y, j;/*initialize*/
a[1] = 1;
printf("%I64d", a[1]);
x = 0, y = 1;
for (j = 2; j <= SIZE; j++) {
a[j] = x + y;
x = y;
y = a[j];
printf(" %I64d", a[j]);
}
return 0;
}
[解决办法]
#include<stdio.h>
#define SIZE 18
int main(void)
{
long long a[SIZE], x, y, j;/*initialize*/
a[0] = 1;
printf("%I64d", a[0]);
x = 0, y = 1;
for (j = 1; j < SIZE; j++)
{
a[j] = x + y;
x = y;
y = a[j];
printf(" %I64d", a[j]);
}
return 0;
}