在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));

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

评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭