在AS中运用递归

一直以来数学学得不好,因此见了算法就头大,但有时又不得不面对。在实际开发中很多时候会作到算法,递归就是最常见的一种。下面我就来谈一谈自己的肤浅认识。

递归可以让一个函数从其内部调用其自身,递归和循环紧密相关,基本上能用循环就能用递归。一个典型示例就是计算阶乘,下面是其ActipnScript的代码。

//阶乘 
function factorial(n) { 
    if (n > 1) { 
        return n*factorial(n-1); 
    } else { 
        return 1; 
    } 
} 
trace("6!="+factorial(6));

此处我们定义了factorial函数,并在其内部调用自己,最后当n=1时就返回1,不再调用从而实现阶乘运算。著名的高斯算法一般是用循环不实现的,其实也可以用递归来实现。看下面代码。

//高斯算法 
function sum(min,max) { 
    if (max > min) { 
        return max + sum(min,--max); 
    } else { 
        return max; 
    } 
} 
trace("1+2+...+10="+sum(1,10));

和循环一样,递归一定要有一个终结点,不然将导致计算机执行一个“无限”死循环。

发表评论