2014-09-29 43 views
1

第一個問題在這裏,很抱歉,如果我的格式是有點過。程序沒有響應上構建的Visual Studio 2013

我想寫涉及在C最大公約數++作爲家庭作業的一部分代碼。然而,每當我去建立我的代碼,我立即得到一個「程序沒有響應」的消息。我試過一個基本的Hello World代碼,它編譯得很好。這是我的代碼。

#include <iostream> 

using namespace std; 

int gcd(int a, int b) 
{ 
    if (b == a) return a; 
    else return gcd(b, a%b); 
} 

int main() 
{ 
    gcd(25,10); 
    return 0; 
} 

我已經嘗試了很多不同的值來調用gcd,但幾乎所有似乎都給我同樣的錯誤。當使用「else」行代碼時,似乎會在main中調用外部函數時發生。我真的不知道該怎麼做。我錯過了一些簡單的東西嗎謝謝。

+0

嘗試添加遞歸函數GCD的退出策略。該函數導致堆錯誤,我認爲。如果參數<= 0則添加,然後返回...子句。 – KernelPanic 2014-09-29 00:09:34

+0

聽起來像你有一個無限循環。在你的'gcd'函數中,打印出'a'和'b'的值,你很快就會看到它出錯的地方。 – 2014-09-29 00:09:57

+0

這會在VS2013中產生一聲巨響,當然不是「程序沒有響應」的消息。首先從標準的Hello World程序開始。 – 2014-09-29 00:24:29

回答

1

與25,10的呼叫:

  • 不相等的,用10打電話,5
  • 不相等的,用5調用,0
  • 仍然不相等,計算5%0 < - 這模0

模(師)0 isn't可能(沒有進入高層數學的東西,
東西CPU不需額外做)。您可以檢查墜毀在調試器,它比標準的Windows消息應該
打印更多有用的信息。

簡單的解決方案:檢查是否b是0與if之前。

+0

啊jeez ..是的,我看到它。我想我不應該只信任我的教授代碼片段。這完全解決了,謝謝。 – Jeriqo 2014-09-29 01:15:16

相關問題