需要印出500項
但會有溢出問題 所以想到把數字塞進陣列裡
但要怎麼做?
求解 剛學C的菜鳥Q__Q
#include<stdio.h>
int main( ){
int i;
int j;
float a[501];
a[0] = 0;
a[1] = 1;
printf("輸入要查詢兔子對數的期數(1~500):");
scanf("%d", &i);
for(j = 2; j <= i; j++)
a[j] = a[j - 1] + a[j - 2];
for(j = 1; j <= i; j++)
printf("第%d期有%.0f隻兔子\n",j, a[j]);
return 0;
}
使用 GMP The GNU Multiple Precision Arithmetic Library
https://gmplib.org/
// fibonacci-gmp.c
#include <stdio.h>
#include <gmp.h>
int main (void)
{
int i;
mpz_t a,b,c;
mpz_init_set_ui(a, 1);
gmp_printf("%d -> %106Zd\n", 1, a);
mpz_init_set_ui(b, 1);
gmp_printf("%d -> %106Zd\n", 2, b);
mpz_init(c);
for ( i = 3 ; i <= 500 ; ++i )
{
mpz_add(c,a,b);
gmp_printf("%d -> %106Zd\n", i, c);
mpz_set(a,b);
mpz_set(b,c);
}
return 0;
}
編譯用
gcc fibonacci-gmp.c -o fibonacci-gmp -lgmp
coding ground 只改用 double 就可以得到結果
不過答案(第500題)只對了最前面15個數字
沒有執行錯誤卻得到錯誤結果
這正是我喜歡 C 語言的地方
話說回來
好像沒看到「遞迴」的寫法
他的遞迴應該是指遞迴關係式