Men的博客

欢迎光临!

0%

算法之数学计算

二分法查找

function binarySeach( arr,val,leftIndex,rightIndex ){
    //找到中间的值
    var midIndex = Math.floor((leftIndex+rightIndex)/2);
    var midval=arr[midIndex];
    //console.log(midval );
    if( leftIndex > rightIndex ){
        console.log("前一位是",midval );
        console.log("下标:",midIndex);
        return ;
    }
    if( midval > val ){
        binarySeach(arr,val,leftIndex,midIndex-1);
    }else if(midval < val){
        binarySeach(arr,val,midIndex+1,rightIndex);
    }else{
        console.log("找到了,下标为:"+midIndex);
        return;
    }
}
var arr=[1,3,12,21,24,44,54,67];
binarySeach(arr,25,0,arr.length-1);

求两个数的最大公约数,递归

function Gcd(var a, var b)
 {
      if(a<=0||b<=0)
          return -1;
     else if(a>b)
         return Gcd(a-b, b);
     else if(a<b)
         return Gcd(a, b-a);
     else
         return a;
 }
// 最小公倍数 两个整数的乘积 / 最大公约数
// a* b/gcd(a,b)

斐波那契数列

function Fibonacci(int n) {
    if(n < 0){
        return 0;
    }
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else return Fibonacci(n-1)+ Fibonacci(n-2);
}

累加求和

int sum = 0;//定义初始化总和
for(int i=1;i<=100;i++){//从1开始循环到100
sum=sum+i;//加上当前序号
}
System.out.println(sum);//在控制台中打印出来
}