Рекурсивные методы

Упражнения с использованием рекурсивных методов.

1. Арифметическая прогрессия

Задание: Написать программу для вывода n первых членов арифметической прогрессии 1, 2, 3… с использованием рекурсивного метода.

Решение
using System;

class Program
{
    static uint ArithmeticProgression(uint n)
    {
        if (n == 0)
        {
            return 1;
        }
        return ArithmeticProgression(n - 1) + 1;
    }

    static void Main(string[] args)
    {
        Console.Write("N = ");
        var n = Convert.ToUInt32(Console.ReadLine());
        for (uint i = 0; i < n; i++)
        {
            Console.WriteLine(ArithmeticProgression(i));
        }

        Console.ReadLine();
    }
}

2. Сумма n первых членов арифметической прогрессии

Задание: Напишите программу для получения суммы n первых членов арифметической прогрессии. Разность прогрессии d задается в качестве параметра.

Решение
using System;

class Program
{
    static uint ArithmeticProgression(uint n, uint d)
    {
        if (n == 0)
        {
            return d;
        }

        return ArithmeticProgression(n - 1, d) + d;
    }

    
    static void Main(string[] args)
    {
        Console.Write("N = ");
        var n = Convert.ToUInt32(Console.ReadLine());
        Console.Write("d = ");
        var d = Convert.ToUInt32(Console.ReadLine());

        var sum = 0u;
        for (var i = 0u; i < n; i++)
        {
            sum += ArithmeticProgression(i, d);
        }

        Console.WriteLine($"Сумма {n} первых членов арифметической прогрессии равна {sum}");
        Console.ReadLine();
    }
}

3. Переворот строки

Задание: Напишите программу для переворота строки с использованием рекурсии. Строка “abс” переворачивается в “cba”.

Решение
using System;

class Program
{
    static string Reverse(string s)
    {
        if (string.IsNullOrEmpty(s))
        {
            return s;
        }

        return Reverse(s.Substring(1)) + s[0].ToString();
    }

    
    static void Main(string[] args)
    {
        Console.Write("Введите строку: ");
        var inputText = Console.ReadLine();
        Console.WriteLine("Перевернутая строка: " + Reverse(inputText));
        Console.ReadLine();
    }
}

4. Индекс максимального элемента массива

Задание: Напишите программу для поиска индекса максимального элемента массива с использованием рекурсии.

Решение
using System;

class Program
{
    static int IndexOfMax(int[] array, int len)
    {
        if (len == 0)
        {
            return len;
        }

        var i = IndexOfMax(array, len - 1);
        return array[len] > array[i] ? len : i;
    }

    static void Main(string[] args)
    {
        var a = new[] { 0, 5, 6, 1, 9, 7, 8, 3, 2, 4 };
        Console.WriteLine("Индекс максимального элемента массива: " + IndexOfMax(a, a.Length - 1));
        Console.ReadLine();
    }
}

Смотрите также: