Qiita 7 - キータぞ、来たぞ、キータだぞー (768レス)
上下前次1-新
1: 2025/09/13(土)12:24 ID:mucntwOq(1) AAS
Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)
外部リンク:qiita.com
Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。
外部リンク[html]:internet.watch.impress.co.jp
前スレ Qiita
2chスレ:tech
省10
2(1): 2025/09/14(日)01:56 ID:CZ0V8fQ4(1) AAS
『【Go】配列を再帰的に逆順にするサンプルコードを書いてみた』
> 再帰を使うことで、ループを使わずにエレガントに実装できる。
根本的なところで誤解してる人な模様。
3: 2025/09/14(日)02:53 ID:bGojT+ur(1) AAS
>>2
一般論として
再帰で表現した方が抽象度が高く理解しやすく定義そのまま表現できることが多い
特に末尾再帰をコンパイラがループへ変換してくれて実行効率が同等ならば全ての点で再帰による表記が勝る
4: 2025/09/14(日)12:10 ID:RhzWmJy7(1) AAS
入力配列と出力配列渡してループで処理するわ
5: 2025/09/14(日)12:59 ID:ZqIkDajJ(1/8) AAS
AA省
6(1): 2025/09/14(日)13:06 ID:ZqIkDajJ(2/8) AAS
記事のスライス操作版のコードは
> // ReverseArrayWithSlice はスライス操作で配列を逆順にする(再帰)
> func ReverseArrayWithSlice(arr []int) []int {
> // ベースケース: 要素が1つ以下なら逆順にする必要なし
> if len(arr) <= 1 {
> return arr
> }
>
> // 最初の要素を取り出し、残りを再帰的に逆順にしてから結合
> return append(ReverseArrayWithSlice(arr[1:]), arr[0])
省2
7(1): 2025/09/14(日)13:28 ID:ZqIkDajJ(3/8) AAS
そもそもの話として、ひとつの記事の中で複数の関数が引数だとか配列の内容を書き換えるのかどうかとか仕様が合ってないから比較になってないのよね。
8: 2025/09/14(日)13:42 ID:yOrWt/NI(1) AAS
>>7
問題はそこだね
ループでも書けるよとかの筋違いな批判は要らんて
9(3): 2025/09/14(日)14:21 ID:ZqIkDajJ(4/8) AAS
・引数は配列を渡すのみ
・内容を逆にした配列を返し、引数で渡した配列の内容は書き換えない
という条件にしたとして、繰り返しで書くより再帰のほうが良い書き方ができるだろうか?
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
省2
10: 2025/09/14(日)15:20 ID:wFXoVVHv(1) AAS
>>9
大昔からの古典すら知らない無知
LISPも知らないんだろうな
11: 2025/09/14(日)15:24 ID:ZqIkDajJ(5/8) AAS
GoとLISPの区別もつかない人とはなあw
12: 2025/09/14(日)15:30 ID:ZqIkDajJ(6/8) AAS
記事のスライス操作版のコードは
> // ReverseArrayWithSlice はスライス操作で配列を逆順にする(再帰)
> func ReverseArrayWithSlice(arr []int) []int {
> // ベースケース: 要素が1つ以下なら逆順にする必要なし
> if len(arr) <= 1 {
> return arr
> }
>
> // 最初の要素を取り出し、残りを再帰的に逆順にしてから結合
> return append(ReverseArrayWithSlice(arr[1:]), arr[0])
省5
13(1): 2025/09/14(日)15:35 ID:ZqIkDajJ(7/8) AAS
AA省
14: 2025/09/14(日)17:50 ID:ZqIkDajJ(8/8) AAS
ChatGPTに下記の質問投げたらそこそこ納得できる回答くれたわ。
「Go言語は末尾再帰はサポートされてるの?」
「末尾再帰最適化されないところでの再帰呼び出しは引数の範囲が不定だとスタックがどれくらい使われるかの予測はしづらいので要はGoでは引数の範囲が不定なところでの再帰呼び出しは使わない方が無難てことですね。」
「関数型言語で育った人とかで「再帰は繰り返し処理より常に正義」とかって人いるじゃない。ああいう人にはGoは辛いかもですね。」
「Lispにloopがサポートされても意地でも使わないとかの人いましたね。」
15: 2025/09/14(日)18:13 ID:pN1ZIB1N(1) AAS
>>6
何言ってんの爆速ですわ
上下前次1-新書関写板覧索設栞歴
あと 753 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.015s