[問題] 用遞迴求最大公因數

看板C_and_CPP (C/C++)作者 (dd)時間13年前 (2012/09/10 21:39), 編輯推噓0(0010)
留言10則, 5人參與, 最新討論串1/1
我用遞迴的方式來求最大公因數,程式碼如下, 想問一下,最底下那行gcd(b,a%b);的前面有加或沒加return,是否有影響? #include<stdlib.h> #include<stdio.h> int gcd(int,int); int main() { int a,b; scanf("%d%d",&a,&b); printf("%d",gcd(a,b)); return 0; } int gcd(int a,int b) { int temp; if(b>a) { temp = a; a = b; b = temp; } if(b==0) { return a; } else { gcd(b,a%b); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.227.132.232

09/10 21:40, , 1F
試試看不就知道了?
09/10 21:40, 1F

09/10 21:52, , 2F
我把code貼到online judge上,被判錯誤,加了return就好了,
09/10 21:52, 2F

09/10 21:53, , 3F
但不知原因為何..
09/10 21:53, 3F

09/10 21:55, , 4F
int gcd(int a,int b) ←一開始的int已經說這個function
09/10 21:55, 4F

09/10 21:56, , 5F
會return一個int,之後程式沒有return當然會不給你過
09/10 21:56, 5F

09/10 21:56, , 6F
就跟 int foo() { } 這樣的東西會被判錯誤是一樣的
09/10 21:56, 6F

09/10 22:26, , 7F
感謝james大指導~
09/10 22:26, 7F

09/11 02:03, , 8F
原因就在錯誤訊息裡... 英文都不看的嗎?
09/11 02:03, 8F

09/11 08:18, , 9F
當然有影響,前面的if-branch為什麼就記得加return?
09/11 08:18, 9F

09/12 17:54, , 10F
那個調換的步驟你寫在gcd裡面幹什麼-.-
09/12 17:54, 10F
文章代碼(AID): #1GJUsf-E (C_and_CPP)
文章代碼(AID): #1GJUsf-E (C_and_CPP)