「だからどうだ」ってことですけど、(perlだとreverseあるので本来なら1オペで終わっちゃうけど)とりあえずループを使わずに与えた配列を逆にするコードの自己最短コードはこうなりました:
sub r{@_?(pop,r(@_)):()};
もう少し読みやすく展開するとこんな感じですね。ただの再帰処理です:
sub myreverse { if (@_ > 0) { return (pop @_, myreverse(@_)); } else { return (); } }
popで配列の最後の要素を最初に回して、残りを再帰処理してるだけー
コメント