javascriptでfizzbuzz。再帰で書く。

これまで再帰ってあまり使っていいものではないという認識でいたのですが、
ただの無知だったのでこんな感じで書けるよ的なメモ。

    <script type="text/javascript">
        var i = 1;
        function fizzbuzz(){
                if((i % 15) == 0) alert("FizzBuzz");
                else if((i % 3) == 0) alert("Fizz");
                else if((i % 5) == 0) alert("Buzz");
                else alert(i);
                ++i;
                if(i < 30) fizzbuzz();                                                                                                                                             
        }
        fizzbuzz();
    </script>

ほかのロジックも再帰で書いてみる。

PHPでも書いたけどあまり変わらず。forなどを使うよりシンプルに見える場面も確かにありそう。

<?php
    function fizzbuzz($i){
        ++$i;
        $f = [Fizz];
        $b = [Buzz];
        $out = $f[$i%3].$b[$i%5];
        echo ($out ? $out : $i) . "\n";
        if($i < 30) fizzbuzz($i);
    }
    fizzbuzz(0);