iT邦幫忙

0

[費氏數列] C語言 使用遞迴陣列

  • 分享至 

  • xImage

需要印出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;
} 

messageImage_1651499441639

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
一級屠豬士
iT邦大師 1 級 ‧ 2022-05-02 23:14:37

使用 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

https://ithelp.ithome.com.tw/upload/images/20220502/20050647TdXKds0As6.png

/images/emoticon/emoticon35.gif

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-05-03 09:16:50

https://ithelp.ithome.com.tw/upload/images/20220503/20001787616bYByjoj.png

coding ground 只改用 double 就可以得到結果
不過答案(第500題)只對了最前面15個數字

沒有執行錯誤卻得到錯誤結果
這正是我喜歡 C 語言的地方
/images/emoticon/emoticon62.gif

話說回來
好像沒看到「遞迴」的寫法
/images/emoticon/emoticon13.gif

淺水員 iT邦大師 6 級 ‧ 2022-05-03 11:30:05 檢舉

他的遞迴應該是指遞迴關係式

我要發表回答

立即登入回答