[問題] 迴圈改遞迴請益

看板Programming作者 (RicciYeh)時間6年前 (2018/09/28 22:52), 編輯推噓2(2013)
留言15則, 4人參與, 6年前最新討論串1/4 (看更多)
小弟第一次發文,若有違反版規的,請鞭小力點,謝謝。 小弟的題目,是尋找一個字串中,某個字母的出現次數 迴圈版本相當簡單,我還應付得來,程式碼如下: int countI(string s, char c) { int length = s.size(), cnt = 0; for (int i = 0; i < length; i++) if (s[i] == c) cnt++; return cnt; } 但遞迴的版本,我真的是一點頭緒也沒有 int countR(string s, char c) { int length = s.size(); if(s[length] == c) return 1 + countR(s, c); } 我原本是這樣寫,可是有一個很大的問題是 length 的值都一樣阿 每函式重進去一次,就會重新呼叫 length = s.size(); 請求各位大神給點方向,感恩。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.114.150 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1538146355.A.183.html

09/28 23:09, 6年前 , 1F
substring?
09/28 23:09, 1F

09/28 23:23, 6年前 , 2F
那個是java嗎?
09/28 23:23, 2F

09/28 23:23, 6年前 , 3F
我沒學過所以沒辦法用欸…
09/28 23:23, 3F

09/28 23:43, 6年前 , 4F
int countR(string s, char c, int i)
09/28 23:43, 4F

09/28 23:47, 6年前 , 5F
拿s[i]跟c比,i等於s.size()時return 0
09/28 23:47, 5F

09/29 00:12, 6年前 , 6F
你length(應該是叫index,不過算了)要
09/29 00:12, 6F

09/29 00:13, 6年前 , 7F
傳下去阿 你不傳下次怎麼知道比到哪裡
09/29 00:13, 7F

09/29 00:46, 6年前 , 8F
函數名字不重要,重要的是你用的程式語言
09/29 00:46, 8F

09/29 00:47, 6年前 , 9F
有沒有類似功能的函數 像Python的substring
09/29 00:47, 9F

09/29 00:49, 6年前 , 10F
就只是[n1,n2]了事 c++的話的確有substring
09/29 00:49, 10F

09/29 12:52, 6年前 , 11F
Sorry弄錯了 length不用傳 是你現在比
09/29 12:52, 11F

09/29 12:53, 6年前 , 12F
到哪一個字元要傳下去 目前你程式裡
09/29 12:53, 12F

09/29 12:53, 6年前 , 13F
沒有這個變數存在
09/29 12:53, 13F

09/29 16:00, 6年前 , 14F
好的感謝大家的幫忙
09/29 16:00, 14F

09/29 16:00, 6年前 , 15F
我再想想
09/29 16:00, 15F
文章代碼(AID): #1Rha0p63 (Programming)
文章代碼(AID): #1Rha0p63 (Programming)