JS编程题(算法)

二分查找

function binarySearch(arr,key){
var start=0;
var end=arr.length-1;
while(start+1<end){
var mid=start+Math.floor((end-start)/2);
if(arr[mid]===key)
return mid;
if(arr[mid]>key)
end=mid
else
start=mid}
return -1;}

如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成)

var result=[];
function fn(n){  //典型的斐波那契数列
   if(n==1){
        return 1;
   }else if(n==2){
           return 1;
   }else{
        if(result[n]){
                return result[n];
        }else{//argument.callee()表示fn()
                result[n]=arguments.callee(n-1)+arguments.callee(n-2);
                return result[n];
        }  }}

快速排序

function quickSort(arr){
            //如果数组<=1,则直接返回
            if(arr.length<=1){return arr;}
            var pivotIndex=Math.floor(arr.length/2);
            //找基准,并把基准从原数组删除
            var pivot=arr.splice(pivotIndex,1)[0];
            //定义左右数组
            var left=[];
            var right=[];

            //比基准小的放在left,比基准大的放在right
            for(var i=0;i<arr.length;i++){
                if(arr[i]<=pivot){
                    left.push(arr[i]);
                }
                else{
                    right.push(arr[i]);
                }
            }
            //递归
            return quickSort(left).concat([pivot],quickSort(right));
        }                

小狗xx dog 叫声wow 看到主人叫yelp

function Dog(){};
Dog.prototype.wow=function(){
console.log("wow");}
Dog.prototype.yelp=function(){
this.wow();}
var xx=new Dog();
yy.yelp();

小狗xm Maddog 叫声wow 0.5秒叫一次yelp

function MadDog(){};
MadDog.prototype=new Dog();
MadDog.prototype.yelp=function(){
var me=this;
setInterval(function(){
me.wow();},500)};
var madDog=new madDog();
madDog.yelp();

寄生式继承

在这里插入代码片

猜你喜欢

转载自blog.csdn.net/weixin_43836308/article/details/88722341