[問題]陣列使用遞迴找最大與最小數

看板C_and_CPP (C/C++)作者 (小馬非馬)時間16年前 (2009/12/18 14:34), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
使用軟體:dev-c++ 4.9.9.2 我遇到的問題應該很基本,可是想很久不知道為什麼,也沒人可以問Q_Q 問題是編譯不過,我也有查到是哪裡的問題 ===========程式碼============ #include<iostream> using namespace std; int a[]={52,31,27,64,100,10,2,34}; int maxmin(int *, int , int & , int &); int max=0,min=0; //這行max跟min的宣告如果放在main裡面 //編譯才會過且執行正確 int main() { maxmin(a,7,max,min); cout<<"max:"<<max<<endl<<"min:"<<min<<endl; system("pause"); } int maxmin(int *a, int i, int &max, int &min) { if(i==0) { max=a[0]; min=a[0]; } else { maxmin(a,i-1,max,min); if(max<a[i]) {max=a[i];} if(min>a[i]) {min=a[i];} } } ===================================================== 編譯的錯誤是main裡面的max跟min未定義,可是我把它寫成global, 照理說應該沒這問題吧0.0 不知道為什麼一定要放在main裡面 ===================================================== 我發現好像是max跟min這兩個名稱的問題?用其它字眼取代就可以了 0.0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.122.183

12/18 14:51, , 1F
為什麼寫成global,卻還要傳...
12/18 14:51, 1F

12/18 14:59, , 2F
經樓上這麼依說我發現我多此一舉,當時沒想這麼多XD
12/18 14:59, 2F
※ 編輯: conan77420 來自: 61.229.122.183 (12/18 15:00)

12/18 15:00, , 3F
因為 min 和 max 是標準函式庫中的 function template
12/18 15:00, 3F

12/18 15:01, , 4F
你宣告在 global 就會撞名
12/18 15:01, 4F

12/18 15:02, , 5F
但宣告在 local 會優先被使用
12/18 15:02, 5F

12/18 15:03, , 6F
瞭解了!記得以前只聽說不要直接用max跟min,不知原因
12/18 15:03, 6F
文章代碼(AID): #1BAo9mzj (C_and_CPP)
文章代碼(AID): #1BAo9mzj (C_and_CPP)