作者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/cn.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