Posted to tcl by kbk at Tue Aug 21 01:11:44 GMT 2012view pretty
namespace path ::tcl::mathop interp recursionlimit {} 120000 proc fib {n {i 0} {this 0} {next 1}} { if {$i >= $n} { return $this } else { tailcall fib $n [+ $i 1] $next [+ $this $next] } } puts [time {set result [fib 40000]}] #puts "fib(40000) == $result" proc fib {n} { variable memo if {[info exists memo($n)]} { return $memo($n) } elseif {$n == 0} { return 0 } elseif {$n == 1} { return 1 } else { return [set memo($n) [+ [fib [- $n 2]] [fib [- $n 1]]]] } } puts [time {set result [fib 40000]}] #puts "fib(40000) == $result" exit