AS3 面试3 二维数组中查找 递归版

package
{
	/**
	 * 题目 在一个二位数组中,每一行都按照从左到右递增顺序排序,每一列都按照从上到下顺序排序,请完成一个函数,输入这样的一个二位数组和一个整数,判断数组中是否含有该整数
	 * */
	import flash.display.Sprite;
	
	public class Main extends Sprite
	{
		public function Main()
		{
			var testArray:Array = [
				[1,2,8,9],
				[2,4,9,12],
				[4,7,10,13],
				[6,8,11,15],
			];
			var result:Array = isHasNum(testArray,7,0,testArray[0].length-1,0);
			if(result[0]==true){
				trace("true x:"+result[1]+" y:"+result[2] +" count:"+result[3]);
			}else{
				trace("false  count:"+result[3]);
			}
		}
		
		private function isHasNum(arr:Array,num:int,sX:uint,sY:uint,count:uint = 0):Array{
			count++;
			var found:Boolean = false;
			if(arr[sX][sY] == num){
				found = true;
			}
			if(found == false){
				if(arr[sX][sY]>num){
					//大于目标数,在左侧
					if(sY-1<0){
						return [found,0,0,count];
					}
					return isHasNum(arr,num,sX,sY-1,count);
					
				}else{
					//小于目标数
 					if(sX+1>arr.length){
						return [found,0,0,count];
					}
					return isHasNum(arr,num,sX+1,sY,count);
				}
			}
			return [found,sX,sY,count];
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值