#3020: 請大大指點一下


bse43hwh (腦袋像是長了芒果)

學校 : 不指定學校
編號 : 10003
來源 : [140.128.156.248]
最後登入時間 :
2023-11-08 17:10:34
a024. 最大公因數(GCD) | From: [140.128.158.87] | 發表日期 : 2009-12-17 14:55

第一次用遞迴寫

#include <stdio.h>
int gcd( unsigned int a, unsigned int b) {
    if ( a % b ){
        return gcd( b, a % b );
    }
    return b;
}
int main() {
    unsigned int a, b;
    while( scanf("%d %d", &a, &b) != EOF ) {
        printf("%d\n", gcd(a, b));
    }
    return 0;
}
執行時發生錯誤 (SIGFPE)(8)!!
可能原因包含溢位或者除以0的問題
sh: line 1:  1700 浮點數出錯

第二次改用迴圈就過了! 

#include <stdio.h>
int main() {
    long int a = 1, b = 1, r;
    while( scanf("%d %d", &a, &b) != EOF ) {
        while( b != 0 ) {          
            r = a % b;
            a = b;
            b = r;
        }
        printf("%d\n", a);
    }
    return 0;
}

為什麼第一次的寫法會錯?看半天,實在找不出原因。大大們可以指點一下嗎?

 
#3022: Re:請大大指點一下


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a024. 最大公因數(GCD) | From: [163.21.208.253] | 發表日期 : 2009-12-17 15:07

第一次用遞迴寫

#include
int gcd( unsigned int a, unsigned int b) {
    if ( a % b ){
        return gcd( b, a % b );
    }
    return b;
}
int main() {
    unsigned int a, b;
    while( scanf("%d %d", &a, &b) != EOF ) {
        printf("%d\n", gcd(a, b));
    }
    return 0;
}
執行時發生錯誤 (SIGFPE)(8)!!
可能原因包含溢位或者除以0的問題
sh: line 1:  1700 浮點數出錯

為什麼第一次的寫法會錯?看半天,實在找不出原因。大大們可以指點一下嗎?

 幫你直接貼上這段程式碼沒有錯阿... ( 解題語言 C )
 
#3024: Re:請大大指點一下


bse43hwh (腦袋像是長了芒果)

學校 : 不指定學校
編號 : 10003
來源 : [140.128.156.248]
最後登入時間 :
2023-11-08 17:10:34
a024. 最大公因數(GCD) | From: [140.128.156.252] | 發表日期 : 2009-12-17 16:16

第一次用遞迴寫

(恕刪) 

執行時發生錯誤 (SIGFPE)(8)!!
可能原因包含溢位或者除以0的問題
sh: line 1:  1700 浮點數出錯

為什麼第一次的寫法會錯?看半天,實在找不出原因。大大們可以指點一下嗎?

 幫你直接貼上這段程式碼沒有錯阿... ( 解題語言 C )

謝謝大大回應!
確實是用 c 解題,也確實是發生RE (SIGFPE) 錯誤 (訊息如上);
很想知道原因,所以請大大們解惑,讓小弟長長知識。

 
#3031: Re:請大大指點一下


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a024. 最大公因數(GCD) | From: [118.166.115.204] | 發表日期 : 2009-12-17 23:32

第一次用遞迴寫

(恕刪) 

執行時發生錯誤 (SIGFPE)(8)!!
可能原因包含溢位或者除以0的問題
sh: line 1:  1700 浮點數出錯

為什麼第一次的寫法會錯?看半天,實在找不出原因。大大們可以指點一下嗎?

 幫你直接貼上這段程式碼沒有錯阿... ( 解題語言 C )

謝謝大大回應!
確實是用 c 解題,也確實是發生RE (SIGFPE) 錯誤 (訊息如上);
很想知道原因,所以請大大們解惑,讓小弟長長知識。

 
377257 guest a024. 最大公因數(GCD)AC (2ms, 270KB) C 2009-12-17 23:27

 我用 guest 帳號幫你測試
 用的是你的遞迴程式碼

 還蠻奇怪的@@

 
#3032: Re:請大大指點一下


bse43hwh (腦袋像是長了芒果)

學校 : 不指定學校
編號 : 10003
來源 : [140.128.156.248]
最後登入時間 :
2023-11-08 17:10:34
a024. 最大公因數(GCD) | From: [140.128.156.252] | 發表日期 : 2009-12-18 09:03

(恕刪)
我用 guest 帳號幫你測試
 用的是你的遞迴程式碼 還蠻奇怪的@@


謝謝大大們的費心。
後來小弟把整個過程再檢查一次,發現是自己搞錯了。
上面這個程式是對的;發生錯誤的另一個跟它「很像」的版本。
對不起,害大家虛驚一場。我真的是「腦袋長了芒果」。謝謝! 
ZeroJudge Forum