.NET 4.x Рекурсивная функция - C#
Формулировка задачи:
Всем привет, ребята помогите пж решить задачу. За ранние спс.
написать рекурсивную функцию, которая на вход получает строку, а выводит на экран (или возвращает) символы, входящие в строку, в следующем порядке: 1) сначала гласные, потом согласные. 2) сначала символы в верхнем регистре, потом в нижнем
Решение задачи: «.NET 4.x Рекурсивная функция»
textual
Листинг программы
using System;
using System.Linq;
namespace ConsoleApp23
{
class Program
{
static void Main(string[] args)
{
var str = "В чащах югА жил бы цитрус? Да, но фальшивый экземпляр!";
var a = new char[] { 'а', 'о', 'и', 'й', 'е', 'ё', 'э', 'ы', 'у', 'ю', 'я' };
var b = new char[] { 'б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ' };
Func<string, string, string> recurse = null;
recurse = (source, current) =>
{
var index = -1;
for (var i = 0; i < source.Length; i++)
{
if (a.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
else if (a.Contains(char.ToLower(source[i])) && index == -1) index = i;
}
if (index == -1)
{
for (var i = 0; i < source.Length; i++)
{
if (b.Contains(char.ToLower(source[i])) && char.IsUpper(source[i])) index = i;
else if (b.Contains(char.ToLower(source[i])) && index == -1) index = i;
}
}
if (index != -1)
{
current += source[index];
source = source.Remove(index, 1);
return recurse(source, current);
}
source = string.Join("", source.Where(x => b.Contains(x))); //очищаем строку от символов не указанных в массивах
current += source;
return current;
};
Console.WriteLine(recurse(str, ""));
Console.ReadKey();
}
}
}