作者conan77420 (小馬非馬)
看板C_and_CPP
標題[問題]陣列使用遞迴找最大與最小數
時間Fri Dec 18 14:34:20 2009
使用軟體: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
→ adks3489:為什麼寫成global,卻還要傳... 12/18 14:51
→ conan77420:經樓上這麼依說我發現我多此一舉,當時沒想這麼多XD 12/18 14:59
※ 編輯: conan77420 來自: 61.229.122.183 (12/18 15:00)
推 littleshan:因為 min 和 max 是標準函式庫中的 function template 12/18 15:00
→ littleshan:你宣告在 global 就會撞名 12/18 15:01
→ littleshan:但宣告在 local 會優先被使用 12/18 15:02
→ conan77420:瞭解了!記得以前只聽說不要直接用max跟min,不知原因 12/18 15:03