25/09/14 15:35:06.93 ZqIkDajJ.net
試しに
・引数は配列を渡すのみ
・内容を逆にした配列を返し、引数で渡した配列の内容は書き換えない
再帰で書いてみたが
func ReverseArray(arr []int) []int {
n := len(arr)
result := make([]int, n)
copy(result, arr)
var reverseArray func(int, int)
reverseArray = func(start int, end int) {
if start < end {
result[start], result[end] = result[end], result[start]
reverseArray(start + 1, end - 1)
}
}
reverseArray(0, n - 1)
return result
}
エレガントとは程遠いな。
ぜひLISP仕込みのエレガントな例をGoで書いて披露してほしいものだ。