一直以来数学学得不好,因此见了算法就头大,但有时又不得不面对。在实际开发中很多时候会作到算法,递归就是最常见的一种。下面我就来谈一谈自己的肤浅认识。
递归可以让一个函数从其内部调用其自身,递归和循环紧密相关,基本上能用循环就能用递归。一个典型示例就是计算阶乘,下面是其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));
和循环一样,递归一定要有一个终结点,不然将导致计算机执行一个“无限”死循环。