<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
</style>
<script type="text/javascript">
var count = 0;
function fib(n) {
count++;
if( n < 0 ) return;
if( n === 0 || n === 1) return 1;
return arguments.callee(n-1) + arguments.callee(n-2);
}
function fib1() {
var arr = [1, 1];
return function (n) {
count++;
if( n < 0 ) return;
// 将数据取出来
var temp = arr[n];
if(temp) {
// 有值,直接用
return temp;
} else {
// 没有值
temp = arguments.callee(n-1) + arguments.callee(n-2);
arr[arr.length] = temp;
return temp;
}
}
}
var func2 = fib1();
// var num = fib(20); // 10946, 21891
var num = func2(20); // 10946, 39
alert(num + ", " + count);
</script>
</head>
<body>
</body>
</html>
优化后递归次数大大减少提高了效率 这次是用js完成的。
Fibonacci数列优化
最新推荐文章于 2024-01-27 21:35:17 发布