diff --git a/scripts/fib.toy b/scripts/fib.toy index ef59c88..d2c85fe 100644 --- a/scripts/fib.toy +++ b/scripts/fib.toy @@ -1,3 +1,4 @@ +//WARNING: please think twice before using this in a test fn fib(n : int) { if (n < 2) return n; return fib(n-1) + fib(n-2); diff --git a/test/scripts/runner_sample_code.toy b/test/scripts/runner_sample_code.toy index 0c3e342..b41a5ae 100644 --- a/test/scripts/runner_sample_code.toy +++ b/test/scripts/runner_sample_code.toy @@ -1,12 +1,21 @@ -fn fib(n : int) { - if (n < 2) { - return n; - } +//memoize the fib function +var memo: [int : int] = [:]; - return fib(n-1) + fib(n-2); +fn fib(n : int) { + if (n < 2) { + return n; + } + + var result = memo[n]; + if (result == null) { + result = fib(n-1) + fib(n-2); + memo[n] = result; + } + + return result; } -for (var i = 0; i < 20; i++) { +for (var i = 0; i < 40; i++) { var res = fib(i); print string i + ": " + string res; } \ No newline at end of file