💬Реализуйте функцию, которая принимает срез целых чисел и переворачивает его без использования временного среза.



📌Простой, но достаточно эффективный способ:



func reverse(sw []int) {

for a, b := 0, len(sw)-1; a < b; a, b = a+1, b-1 {

sw[a], sw[b] = sw[b], sw[a]

}

}



func main() {

x := []int{3, 2, 1}

reverse(x)

fmt.Println(x)

}




// [1 2 3]



📌Другой способ с использованием рекурсивного метода: рекурсивно меняем местами первый и последний элементы, затем второй и предпоследний и так далее.



func reverseRecursive(sw []int, start, end int) {

if start >= end {

return

}

sw[start], sw[end] = sw[end], sw[start]

reverseRecursive(sw, start+1, end-1)

}



func main() {

x := []int{3, 2, 1}

reverseRecursive(x, 0, len(x)-1)

fmt.Println(x)

}




// [1 2 3]