作者RicciYeh (RicciYeh)
看板Programming
標題[問題] 迴圈改遞迴請益
時間Fri Sep 28 22:52:32 2018
小弟第一次發文,若有違反版規的,請鞭小力點,謝謝。
小弟的題目,是尋找一個字串中,某個字母的出現次數
迴圈版本相當簡單,我還應付得來,程式碼如下:
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://webptt.com/m.aspx?n=bbs/Programming/M.1538146355.A.183.html
1F:→ ohcE0: substring? 36.228.195.222 09/28 23:09
2F:→ RicciYeh: 那個是java嗎? 114.42.114.150 09/28 23:23
3F:→ RicciYeh: 我沒學過所以沒辦法用欸… 114.42.114.150 09/28 23:23
4F:推 cutekid: int countR(string s, char c, int i)101.137.169.131 09/28 23:43
5F:推 cutekid: 拿s[i]跟c比,i等於s.size()時return 0101.137.169.131 09/28 23:47
6F:→ MOONRAKER: 你length(應該是叫index,不過算了)要 218.161.46.90 09/29 00:12
7F:→ MOONRAKER: 傳下去阿 你不傳下次怎麼知道比到哪裡 218.161.46.90 09/29 00:13
8F:→ ohcE0: 函數名字不重要,重要的是你用的程式語言 36.228.195.222 09/29 00:46
9F:→ ohcE0: 有沒有類似功能的函數 像Python的substring 36.228.195.222 09/29 00:47
10F:→ ohcE0: 就只是[n1,n2]了事 c++的話的確有substring 36.228.195.222 09/29 00:49
11F:→ MOONRAKER: Sorry弄錯了 length不用傳 是你現在比 218.161.46.90 09/29 12:52
12F:→ MOONRAKER: 到哪一個字元要傳下去 目前你程式裡 218.161.46.90 09/29 12:53
13F:→ MOONRAKER: 沒有這個變數存在 218.161.46.90 09/29 12:53
14F:→ RicciYeh: 好的感謝大家的幫忙223.140.111.163 09/29 16:00
15F:→ RicciYeh: 我再想想223.140.111.163 09/29 16:00