使用遞迴搜詢陣列內最大值 |
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
#include int max(int LIST[], int n ) } 想很久還是搞不懂 , 懂的朋友可以說一下嘛?? 謝謝
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
if (LIST[n] > max(LIST,n - 1)) 程序開始應該是一直遞歸max(LIST,n - 1)) 當 n == 0 時候 return LIST[0] , 相當於 return 44 , 之後返回 之後else return max(LIST,n - 1); 用意何在我這搞不懂之後的變化? |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好, 首先,講個題外話,你這個程式一定只能用c 來compile,僅管整個程式明明就是C,為何這麼說? 因為max這個function本來就是存在的,c 有,c也有,差別只是在c 可允許複載,所以你才可以過關。不然你用c的選項來跑就會出錯。建議不要使用這個名稱,改用 __max或my_max等。 } 不過到此我們有個線索,就是我們應該要傳的是「目前為止的前面」最大的值。即我們想回傳的是546而非和66相鄰的445。咦?? 回想最上面的話,請記住的那句話「自定的max這個function的意義就是算出從n-1至0中所有的值誰最大」。 1. if ( LIST[1] > 44 ) return LIST[1]; //LIST[1] = 74 , return 74; //傳後 再用力思考一下吧,應該會了解的! if (LIST[n] > max(LIST,n - 1)) 程序開始應該是一直遞歸max(LIST,n - 1)) 當 n == 0 時候 return LIST[0] , 相當於 return 44 , 之後返回 之後else return max(LIST,n - 1); 用意何在我這搞不懂之後的變化?
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |