2013年11月7日木曜日

開発環境

『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリージャパン、2009年、ISBN978-4-87311-425-5) の5章(関数)、練習問第5-1、5-2を解いてみる。

その他参考書籍

練習問第5-1、5-2

コード(BBEdit)

var result = '',
    n = parseInt($('#t0').val(), 10),
    calcFactorialRecursively = function (n) {
        if (n < 0){
            throw {
                type: 'エラー',
                message: '自然数を指定してください'
            };
        }
        if (n <= 1){
            return 1;
        }
        return n * calcFactorialRecursively(n - 1);
    },
    calcFactorialWithLoop = function (n) {
        var result,
            i;
        if (n < 0){
            throw {
                type: 'エラー',
                message: '自然数を指定してください'
            };
        }
        result = 1;
        for (i = 2; i <= n; i += 1) {
            result *= i;
        }
        return result;
    },
    nums = $('#t1').val().split(',').map(function (e) {
        return parseInt(e, 10);
    }),
    convertNumberToWago = function (nums) {
        var result = [],
            i,
            max;
        for (i = 0, max = nums.length; i < max; i += 1) {
            switch (nums[i]) {
                case 0:
                    result.push('れい');
                    break;
                case 1:
                    result.push('ひとつ');
                    break;
                case 2:
                    result.push('ふたつ');
                    break;
                case 3:
                    result.push('みっつ');
                    break;
                case 4:
                    result.push('よっつ');
                    break;
                case 5:
                    result.push('いつつ');
                    break;
                case 6:
                    result.push('むっつ');
                    break;
                case 7:
                    result.push('ななつ');
                    break;
                case 8:
                    result.push('やっつ');
                    break;
                case 9:
                    result.push('ここのつ');
                    break;
                default:
                    result.push('?');
            }
        }
        return result;
    },
    wagos = convertNumberToWago(nums),
    i,
    max;
result += 'calcFactorialRecursively('+ n + ') = ' +
    calcFactorialRecursively(n) + '\n' +
    'calcFactorialWithLoop(' + n + ') = ' +
    calcFactorialWithLoop(n) + '\n' +
    wagos;
$('#pre0').text(result);


0 コメント:

コメントを投稿