Fibonacci 數列問題,第一個數字是1,第二個數字也是1 ,從第三個數字開始,該數是前兩個數之和
要求寫出這個數列的前40個數字

我這樣寫的,為什么出現了負數?
#include "stdio.h"
int main(){
int i;
long int arr[40];
arr[0]=1;
arr[1]=1;
for(i=2;i<40;i++){
arr[i]=arr[i-1]+arr[i-2];
printf("%d\t",arr[i]);
}
getch();
return 0;
}
uj5u.com熱心網友回復:
可以 除錯一下看看,就可以發現問題,看什么時候變成負數了,看代碼本身,好像沒有問題uj5u.com熱心網友回復:
#include "stdio.h"
int main(){
int i;
long int arr[40];
arr[0]=1;
arr[1]=1;
for(i=2;i<40;i++){
arr[i]=arr[i-1]+arr[i-2];
printf("%ld\t",arr[i]);
}
getchar();
return 0;
}
uj5u.com熱心網友回復:
我這顯示正常:#include "stdio.h"
#include <conio.h>//getch()函式頭檔案
int main(){
int i;
int arr[40];
arr[0]=1;
arr[1]=1;
for(i=2;i<40;i++){
arr[i]=arr[i-1]+arr[i-2];
printf("%d ",arr[i]);
}
getch();
return 0;
}
//2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711
//28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887
//9227465 14930352 24157817 39088169 63245986 102334155
uj5u.com熱心網友回復:
#include "stdio.h"
int main(){
int i;
unsigned long long arr[40];
arr[0]=1;
arr[1]=1;
for(i=2;i<40;i++){
arr[i] = arr[i-1] + arr[i-2];
//printf("%d\t",arr[i]);
printf("%llu\t", arr[i]);
}
putchar(10);
getchar();
return 0;
}
負數,應該是溢位的緣故,因為long int最高位是符號位,計算得到的值超出了long int表示的正整數范圍;
另外,long int輸出應該是%ld不是%d
uj5u.com熱心網友回復:
躲過了初一,沒躲過十五使用16位環境要格外小心
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268365.html
標籤:C語言
下一篇:為啥回傳最大子列啊
