.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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы