static uint GCD(List<uint> numbers, uint startIndex) { return numbers.Count <= 1 || numbers.Count <= startIndex ? 0 : GCD(numbers[(int) startIndex], numbers.Count - startIndex > 2 ? GCD(numbers, startIndex + 1) : numbers[(int) (startIndex + 1)]); }