Упражнения с использованием рекурсивных методов.
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();
}
}