一个程序,该程序在字符串上接收一个句子,然后在char上接收一个字母,然后计算我们收到的相同字母的数量(解决方案必须在c#上递归)
namespace recorse
{
class Program
{
static double countc(string s, string c)
{
int n = 0, h, count = 0, l = 0;
h = s.Length;
if (l != h)
{
s = s.Substring(n, l);
l++; n++;
if (s == c)
{
count++;
return (countc(s, c));
}
}
return (count);
}
}
}
答案 0 :(得分:2)
如果要进行递归处理,应该考虑如何拆分并以相同的方式处理问题的各个部分以及一些极端情况。
我在下面编写了递归函数,我将尽力解释。我猜这是功课,所以请不要跳过解释。
说明:
您要在句子(句子)中找到您的字符(c)。 每个步骤的解决方案都是相同的,但是拐角处的情况是一个空句子,其中您的字符出现0次。
在每个递归步骤中,您都想拆分问题。最简单的解决方案是将句子拆分为第一个字符和句子的其余部分。因此,解决方案将是以下各项的总和: a)第一个字符是否匹配,并且 b)在其余句子中出现您的角色。
递归函数:
static int CountChar (char c, string sentence)
{
if (sentence.Length == 0) return 0;
var firstLetter = sentence[0];
var restOfSentence = sentence.Substring(1);
int count = firstLetter.Equals(c) ? 1 : 0;
return count + CountChar(c, restOfSentence);
}
答案 1 :(得分:0)
这是一个示例,您可以通过递归计算文本中的字符数:
static void Main(string[] args)
{
Console.WriteLine(CountChar("asdasdasdasd",'a'));
Console.WriteLine(CountChar("asdasdasdasdbb", 'b'));
}
public static int CountChar(string text, char character)
{
if(text.Length==1)
{
if (text[0] == character)
return 1;
else
return 0;
}
else
{
return (text[0] == character ? 1 : 0) + CountChar(text.Substring(1), character);
}
}