^set max_recur 1000

alias fib {
	if ([$0]==0) { @ function_return = 0} {
		if ([$0]==1) { @ function_return = 1} {
			@ function_return = fib(${[$0]-1}) + fib(${[$0]-2})
		}
	}
}

alias fibb {
	@function_return=[$0]>1?fibb(${[$0]-1})+fibb(${[$0]-2}):[$0]?1:0
}

# 84 seconds
alias fib2 {
	@ start = time()
	eval echo $fib(20)
	echo Total time = ${time() - start}
}

# 59 seconds
alias fib3 {
	@ start = time()
	eval echo $fibb(20)
	echo Total time = ${time() - start}
}

# 226 seconds
alias fib4 {
	@ start = time()
	eval echo $fib(22)
	echo Total time = ${time() - start}
}

# 161 seconds
alias fib5 {
	@ start = time()
	eval echo $fibb(22)
	echo Total time = ${time() - start}
}

