1 function fib(n) { 2 return n < 2 ? 1 : fib(n - 1) + fib(n - 2); 3 } 4 5 function eternal_fib() { 6 var started = Date.now(); 7 while(true) { 8 fib(20); 9 // Make page responsive by making a break every 100 ms. 10 if (Date.now() - started >= 100) { 11 setTimeout(eternal_fib, 0); 12 return; 13 } 14 } 15 } 16 17 function run_fib() { 18 // Let the page do initial rendering, then go. 19 setTimeout(eternal_fib, 200); 20 } 21