自分が計算した値を覚えておくように関数を構築する。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Listing 4.9</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 isPrime(value) { if (!isPrime.anwers) isPrime.answers = {}; //#1 if (isPrime.answers[value] != null) { //#2 キャッシュした値をチェックする return isPrime.answers[value]; //#2 } //#2 var prime = value != 1; // 1は決して素数にならない for (var i = 2; i < value; i++) { if (value % i == 0) { prime = false; break; } } return isPrime.answers[value] = prime; //#3 // メモ化、計算した値を保存する } assert(isPrime(5), "5は素数!" ); //#4 assert(isPrime.answers[5], "答えはキャッシュされた!" ); //#4 assert(isPrime.answers[5], "答えはキャッシュされた!" ); //#4 assert(isPrime(5), "5は素数!" ); //#4 </script> </body> </html>