きしもとです > PHP、C言語にも移行可能なロジックと言う意味で一般解と言いました。 PHPはともかく、C言語(特に生のC言語)は、文字列の自由な扱い とかができないのでかなり癖のある書き方をします。それを一般解と されるのなら、たぶんちゃんと本物のC言語でやるべきです。 > 今回のテーマは再起呼び出しだったのですが > 再帰のロジックを書いてみてくださいといって > > def calc(calc(n)) > 〜 > end > > という書き方をしてしまう人には > 教える順序というものがあると思います。 そうですね。その段階だとすると、再帰を扱うのが無理なんでは ないかと思います。しかもやろうとしていることが、再帰以外に、 ・整数の文字列化 ・文字列処理 ・文字列の再整数化 こういったややこしい処理(rubyを使い込んでいればどれも簡単に できることではありますが)が絡んでいるような回答を標準的な 回答とするような題材を、なぜ、「教える順序というものがある」 とわかっていながら使うのでしょう? その段階で、それでも とにかく再帰について扱うなら、再帰による 1 + 2 + 3 + 4 でも、 def sum_natural(n) if n > 0 then n + sum_natural(n - 1) else 0 end end あたりから、なぜ始めないのでしょうか(もしそういう課題は 済ませた、というのであれば申し訳ないですが)。 そもそも、「ロジック」ってなんでしょうね? Ruby のマニュアルで「論理」という言葉が使われているところを 探すならば、false, true に && や ||、あるいは Integer#& など です。そういったような意味じゃないですよね? プログラムロジック、あるいはビジネスロジック↓ http://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF あたりから派生させて使っておられるのだと思いますが、 「再帰のロジックを書いてみてください」っていったいどういう 意味でしょう? 「ロジック」って言葉を使わないほうが、 正確に表現できるんじゃないですか? (それでもなお「再帰」の「ロジック」にこだわると、こんな怖い http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20090606 ページが出てきちゃいますよ^^;)