Home > スポンサー広告 > 再帰関数のメモ

スポンサーサイト

スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://karafuto50.blog117.fc2.com/tb.php/147-f29ca586
Listed below are links to weblogs that reference
スポンサーサイト from Karafuto Blog

Home > スポンサー広告 > 再帰関数のメモ

Home > javascript > 再帰関数のメモ

再帰関数のメモ

javascript

関数は自分自身を参照し、呼び出す事ができます。

Core JavaScript 1.5 Reference:Functions - MDC

引数で渡された数の階乗を計算

関数名で自分自身を呼び出す
function f(n){
    if (n <= 1){
        return 1;
    }
    return n * f(n - 1);
}
alert(f(5));    // 120
arguments.calleeで自分自身を呼び出す

無名関数の時は関数名が無いので arguments.calleeで自分自身を呼び出す。arguments.calleeは関数自体を参照する。

alert(
    (function (n){
        if (n <= 1){
            return 1;
        }
        return n * arguments.callee(n - 1);
    })(6)
);    // 720

ドキュメントツリーをたどり、ボーダーをセットする

setBorder(document.body, 'H3');

// (element:はじめの要素, target:ボーダーを付ける要素)
function setBorder(element, target){
    if (element.nodeName == target){
        element.style.border = 'solid 2px yellow';
    }
    for (element = element.firstChild; element; element = element.nextSibling){
            setBorder(element, target);
        }
    }
}

ドキュメントツリーをたどり、新しいウィンドウにノード名を書き出す

main();

function main(){
    var tree = Array();
    trace(document, tree, 0);
    write(tree);
}

function write(ary){
    var w = window.open('');
    w.document.write('<html><head><title>Recursive Function</title></head><body>');
    for (var i = 0; i < ary.length; i ++ ){
        w.document.write('<p>' + ary[i] + '<br /></p>');
    }
    w.document.write('</body><html>');
    w.document.close();
}

// DOMを解析 (node:対象のノード, ary:ノードを入れる配列, ノードの深さ)
function trace(node, ary, depth){
    ary.push(space(depth) + node.nodeName);
    if (node.childNodes.length){
        depth ++ ;
    }
    for (var i = 0; i < node.childNodes.length; i ++ ){
        trace(node.childNodes[i], ary, depth);
    }
}

// インデント
function space(number){
    for (var i = 0, string = ''; i < number * 4; i ++ ){
        string += '&nbsp;';
    }
    return string;
}

Comments:0

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://karafuto50.blog117.fc2.com/tb.php/147-f29ca586
Listed below are links to weblogs that reference
再帰関数のメモ from Karafuto Blog

Home > javascript > 再帰関数のメモ

おまかせリンク(R)
全記事表示リンク
Search
Meta
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。