関数が自分自身を呼び出し、コールツリーのなかである関数が
元の連鎖を呼び出すとき、再帰が発生する
再帰の条件
- 自己参照(自分自身を呼び出していること)
- 終了への収束(再帰を停止する条件が実装されていること)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Listing 4.2</title> <script type="text/javascript" src="../scripts/assert.js"></script> <link href="../styles/assert.css" rel="stylesheet" type="text/css"> </head> <body> <script type="text/javascript"> function chirp(n) { //#1 return n > 1 ? chirp(n - 1) + "-chirp" : "chirp"; //#1 } //#1 assert(chirp(0) == "chirp", //#2 "名前付き関数の呼び出しは予想通りに行われる。"); //#2 assert(chirp(1) == "chirp", //#2 "名前付き関数の呼び出しは予想通りに行われる。"); //#2 assert(chirp(2) == "chirp-chirp", //#2 "名前付き関数の呼び出しは予想通りに行われる。"); //#2 assert(chirp(3) == "chirp-chirp-chirp", //#2 "名前付き関数の呼び出しは予想通りに行われる。"); //#2 assert(chirp(4) == "chirp-chirp-chirp-chirp", //#2 "名前付き関数の呼び出しは予想通りに行われる。"); //#2 </script> </body> </html>