Fibonacci(斐波纳契) 数列:从第3位开始,每个数都是其2个直接前项的和。
0,1,1,2,3,5,8,13,21.。。。。。。。。。。
public function fib1(n:Number):Number
{
if (n == 0) return 0;if (n == 1) return 0;if (n == 2) return 1;
return fib1(n - 1) + fib1(n - 2);
}
public function fib2(n:int):Number
{
if (n == 0) return 0;if (n == 1) return 0;if (n == 2) return 1;
var arr:Array = new Array();
arr[0] = 0;
arr[1] = 1;
for (var i:int = 2; i <= n; i++)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n];
}
函数中的返回值如果是int那么50项左右就溢出了。
第一个算法运用了递归。这个算法随着n的增加而成指数性质的增加。不实用。
第二个用了数组。还可以算个200项也很快。
var fibSeries:FibonacciSeries=new FibonacciSeries();
//trace(fibSeries.fib1(200));
trace(fibSeries.fib2(100));