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