- ベストアンサー
シンプルな書き方
perlは、すごく楽に書けると聞きました。 たとえば、以下のソースをもっとシンプルに書くことはできますか? ---------------------------------------- sub Kaijyou() { if(@_[0]==1){return 1;} return @_[0]*&Kaijyou(@_[0]-1); } $Str=<STDIN>; print "=".&Kaijyou($Str); <STDIN>#待ち ---------------------------------------- また、こうはできないですね? sub Kaijyou() { if(@_[0]==1){return 1;} return @_[0]*&Kaijyou(@_[0]-1); } print "=".&Kaijyou($<STDIN>;); <STDIN>#待ち 何故でしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sub Kaijyou() { return (@_[0]==1)? 1 : @_[0]*&Kaijyou(@_[0]-1); } print "=".&Kaijyou($Str=<STDIN>); <STDIN>#待ち ------------------------------------------------- とか
その他の回答 (1)
- taseki
- ベストアンサー率66% (155/233)
@_[0] は $_[0] の間違いではないでしょうか。 シンプルに、という意味では、ここまで短いなら不要な気がしますが、正直ちょっと解りにくいソースな気がしてしまいます。再起呼び出しは1ずつ繰り返し減算するためだけでしょうか。 $<STDIN>はコンテキストによって挙動が異なるため、やはり変数に読み込むのが良いかと思います。
お礼
ありがとうございました。
お礼
ありがとうございました。