看板 Soft_Job 關於我們 聯絡資訊
※ 引述《zanyking (遙遠的旅人)》之銘言: : 推 ChonPiggy:抱歉因為我現在還沒出來找工作..算剛離開學校..想問一下 07/19 21:05 : → ChonPiggy:如果第一個問題只用subString跟length..做反序輸出.. 07/19 21:06 : → ChonPiggy:可以嗎@@? 07/19 21:06 : → ChonPiggy:然後第二個只用if判別之後加起來@@? 07/19 21:07 如你所想: 解決辦法有點彆扭,但還可以. #include <iostream> #include <string> using namespace std; void PrintStrRev(string str); int main(int argc, char *argv[]) { string str = "This is a String"; PrintStrRev(str); for (int i = 0; i< str.length(); i++) { if (str.substr(i, 1) == " ") break; cout << str.substr(i, 1); } system("PAUSE"); return EXIT_SUCCESS; } void PrintStrRev(string str) { if (str.substr(0, 1) == "") return; PrintStrRev(str.substr(1,str.length()-1)); if (str.substr(0, 1) == " ") { for (int i = 1; i< str.length(); i++) { if (str.substr(i, 1) == " ") break; cout << str.substr(i, 1); } cout << ' '; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.212.48
ChonPiggy:那是我一開始誤解題意...我以為是全部反序... 07/19 22:31
ChonPiggy:像 gnirtS a si sihT 這樣... 07/19 22:32
ChonPiggy:這程式碼對我來說好精妙..看懂花好久時間... 07/19 22:41
ChonPiggy:這樣不會變成t tr tri trin tring 之類的嗎@@? 07/19 22:43
ledia:stack overflow 07/19 23:04
yauhh:遞迴啊,就是把This is a String反著看,一個字,一個空格,一個 07/19 23:37
yauhh:字,一個空格,一個字,一個空格. 07/19 23:37
yauhh:有stack overflow嗎?我寫的結果是運作正常. 07/19 23:54
ledia:只看這麼短的字當然 ok 啦 XD 07/19 23:58
ledia:遞迴沒有問題, 但是不用迴圈解的風險就是資料量如果超乎預期 07/20 00:01
ledia:會有 stack overflow 的風險, 所以看用途囉 07/20 00:01
yauhh:哎...problem並不是用嘴講一講就講出來的... 07/20 00:37
yauhh:要說遞迴就是stack overflow,那真是原罪論. 07/20 00:38
ledia:哈 那你就繼續愛用吧 XD 07/20 07:53
阿你沒本事具體指出我程式哪一行有錯,只好用攻打遞迴的態度,這根本是耍無賴吧! XD 本來一件對的事情,突然被你講得好像很可恥一樣,是能當飯吃喔?
costbook:來做個複雜度分析吧? 07/20 07:58
andymai:l大不過是有考量到會出狀況的情形罷了~拿出來講一下也沒啥 07/20 21:14
但是我沒有製造出stack overlfow的問題啊. 你想想,為什麼一堆人寫一堆拋出 exception的程式?因為他們根本沒打算讓程式撞到錯誤. 同樣的,我用遞迴,但是我不會 沒事去輸入那麼長的文字特地去製造stack overflow. 同樣,你可以寫一些部份正確 的函式,用正確的方式使用它,這樣沒有人會說你錯. 所以我覺得特地為了挑毛病而指錯 很沒有意義. 他說的錯我也知道,可是我沒有自己跑去撞那個錯啊. ※ 編輯: yauhh 來自: 218.160.109.242 (07/20 21:19)
andymai:怎麼看到這樣的互動~感覺跟我公司同事有點像...囧 有人就 07/20 21:16
andymai:是喜歡提一下自己想到的情形啊~講一下也不會怎樣嘛~何必要 07/20 21:16
andymai:針對這個開始無窮盡的討論呢?明明大家都知道現在什麼情形 07/20 21:17
Lixe:給原po 資料量大到一定程度用stack就會爆.. 07/20 21:18
Lixe:這跟你程式哪一行有錯根本就沒關係 07/20 21:18
andymai:寫程式都嘛有個限制在~不然無限放大下去哪有交差的時候... 07/20 21:19
yauhh:對啊,本來就是有個限制. 所以我沒有輸入那種長字串啊. 07/20 21:20
andymai:我知道~我都知道~因為這已經開始跟我公司同事的互動一模一 07/20 21:20
andymai:樣了XDDD 唉唷...真是...XDDD 07/20 21:21
yauhh:stack會爆誰不知道啊,但是怕爆就死都不用,可能比較可笑吧 07/20 21:21
yauhh:不對,andymai你搞錯了,誰要去符合你所認知的模式啊. 07/20 21:22
andymai:沒有啦!他也就提一下嘛~大家心知肚明知道有這個就好了啊.. 07/20 21:22
yauhh:重點是,今天花時間寫程式的是我,花時間嘴砲的是誰啊? 07/20 21:22
yauhh:他哪是提一下,我感覺他是沒錯可挑但非挑不可,所以就瞎講 07/20 21:23
yauhh:而且原初重點是在:只用substr和length就做得到這題的要求. 07/20 21:24
yauhh:而我在重點部份已經做到了. 07/20 21:25
Lixe:給原po 我誤會你了 XD 07/20 21:27
Lixe:另外我會想爆掉因為寫習慣driver外加stress test了.. 07/20 21:28
Lixe:所以直覺思考都會避免stress下會爆掉的情況~~ 07/20 21:28
Lixe:不過關於會一直出現excpetion的程式.. 還是很奇怪阿 07/20 21:31
ledia:這也不是個用了遞迴就會比較好寫的題目 07/21 07:56
ledia:喜歡用個效率差, 寫法難懂, 又有 overflow 風險的方法 07/21 07:56
ledia:講你兩句又不承認, 那我還真不知道該說什麼好了 07/21 07:57
ledia:用迴圈從後面跑回來真的有這麼難嗎 ? 07/21 07:57