Что не так с вызовом рекурсии? - C#
Формулировка задачи:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace max1 { class Program { public static int max(int l, int r) { //Console.WriteLine(l + " " + r); int mid, v, n; if (l == r) return l; mid = (l + r) / 2; n = max(l, mid); v = max(mid + 1, r); if (n > v) return n; else return v; } static void Main(string[] args) { int m, l = 0, r = 200; int[] mas = new int[200]; Random z = new Random(); for (int i = 1; i <= mas.Length; ) { int index = z.Next(200); if (mas[index] == 0) { mas[index] = i; i++; } } for (int i = 0; i < 200; i++) Console.Write(mas[i] + " "); Console.WriteLine(); m = max(l,r); Console.WriteLine(); Console.WriteLine(l + " " + r); Console.WriteLine(m); } } }
int[] mas = new int[200]; Random z = new Random(); for (int i = 1; i <= mas.Length; ) { int index = z.Next(200); if (mas[index] == 0) { mas[index] = i; i++; } }
Решение задачи: «Что не так с вызовом рекурсии?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace max1 { class Program { public static int max(int[] data, int l, int r) { //Console.WriteLine(l + " " + r); int mid, v, n; if (l == r) return data[l]; mid = (l + r) / 2; n = max(data, l, mid); v = max(data, mid + 1, r); if (n > v) return n; else return v; } static void Main(string[] args) { int length = 20; int[] sourceData = new int[length]; for(int k1 = 0, k2 = length - 1; k1 <= k2; ++k1, --k2){ sourceData[k1] = (k1 - k2) * k2; sourceData[k2] = (k1 + k2) * k1; } int maximum = max(sourceData, 0, length - 1); Console.WriteLine("Source data:"); print(sourceData); Console.WriteLine("Max: " + maximum); } private static void print(int[] data){ for(int k = 0; k < data.Length; ++k){ Console.Write(data[k]+" "); } Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д