・引数は配列を渡すのみ
・内容を逆にした配列を返し、引数で渡した配列の内容は書き換えない
という条件にしたとして、繰り返しで書くより再帰のほうが良い書き方ができるだろうか?

func ReverseArrayWithFor(arr []int) []int {
  n := len(arr)
  result := make([]int, n)

  for i := 0; i < n; i++ {
    result[i] = arr[n - i - 1]
  }

  return result
}

「全ての点で再帰による表記が勝る」という人には再帰の素晴らしさをぜひ証明してほしいところだが口だけ番長だろうなあ。