Рекурсивный метод для поиска максимального и минимального элемента массива - C#
Формулировка задачи:
Всем привет.
Помогите доработать программу: Нужно написать рекурсивный метод для поиска максимального и минимального элемента массива и не рекурсивный.
class Program
{
static void Main(string[] args)
{
MyArr array = new MyArr();
array.Print("Исходный массив:\t");
Console.WriteLine("Минимальный элемент:\t" + array.GetMin());
Console.WriteLine("Максимальный элемент:\t" + array.GetMax());
Console.WriteLine("Минимальный элемент:\t" + array.ElementSearch());
Console.ReadLine();
}
}
public class MyArr
{
static int[] array;
public MyArr()
{
array = new int[10];
Random rnd = new Random();
for (int i = 0; i < array.Length; i++)
array[i] = rnd.Next(50);
}
public void Print(string msg)
{
Console.Write(msg + string.Join(" ", array) + "\n");
}
// Не реккурсивный метод поиска максимума
public int GetMin()
{
int min = int.MaxValue;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < min)
{
min = array[i];
}
}
return min;
}
// Не реккурсивный метод поиска минимума
public int GetMax()
{
int max = int.MinValue;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > max)
{
max = array[i];
}
}
return max;
}
// Реккурсивный метод поиска
public int ElementSearch(int[] Source, int Element)
{
if (Element + 1 == Source.Length)
{
return Source[Element];
}
else
{
Console.WriteLine("The lowest number is" + Source[(Element - 1)]);
return Math.Min(Source[Element], ElementSearch(Source, Element + 1));
}
}
}Решение задачи: «Рекурсивный метод для поиска максимального и минимального элемента массива»
textual
Листинг программы
void Main()
{
int[] arr = {6,-3,14,12,0,1,45,22,-1,7};
Console.WriteLine(FindElementNotRecurs(arr, (x,y) => x > y)); // Для максималки
Console.WriteLine(FindElementNotRecurs(arr, (x,y) => x < y)); // Для минималки
}
static int FindElementNotRecurs(int[] arr, Func<int,int,bool> func)
{
int item = arr[0];
for(int i = 1; i <arr.Length; ++i)
if(func(arr[i], item))
item = arr[i];
return item;
}