如果字符串的字符放在数组中,如何使用递归找到特定字符的出现次数? 我现在正在使用这个伪代码:
f(A[0;n-1],k)
if(n=0)then return;
c=0;
if(A[n-1]=k)then c++;`
return c+f(A[0;n-2],k)
答案 0 :(得分:1)
让我们调用递归函数f(S,c),其中S是输入字符串。 我们可以将f(S,c)表示为:
Base case:
f(S, c) = 0, if length(S) == 0
General case:
f(S, c) = 1 + f(S[1:], c), if S[0] == c
= f(S[1:], c), otherwise
where S[x:] denotes substring of S starting at xth index till the end.
在单词中我们可以将其视为:假设我们知道较小的子问题的答案,该子问题是从索引1开始到最后一个字符结束的子字符串。现在,如果第0个字符与给定字符串匹配,我们的答案将只是1 +回答较小的子问题,否则我们的答案将是较小子问题的答案
答案 1 :(得分:0)
因为它是一种递归问题,所以必须有一个基本情况。它的长度是字符串字符或0
情况的结尾。确定了基本情况后,现在我们逐步了解字符串。我们开始步行,如果有想要找到的角色,我们会将+1
发送到下一个递归调用。在每次调用中,+1
都会返回到其他递归,直到基数被击中。