蓝桥杯备赛第三周

什么是递归;

按我自己的理解递归就是同一个函数的循环运行。
1、找重复
找到一种划分方法
找到递推公式或者等价转接都是父问题转化为求解子问题
2、找变化的量
变化的量通常要作为参数
3、找出出口
找到边界值

两种固定的递归;

斐波那契数列:

static int fib(int n){
  if (n ==1 || n == 2)
  return 1;
return fib( n: n - 1)+ fib( n: n - 2);

最大公约数:

static int gcd(int m,int n){
  if (n==0)
     return m;
return gcd(n,n: m%n);

递归的运用-三种排序与冒泡排序的比较;

1、递归形式的插入排序:

static void insertSort(int[]arr,int k){
   if(k==0){
     return;
   }
   insertSort(arr,k: k-1);
   int x = arr[k];
   int index = k-1;
   while(x<arr[index]){
   arr[index+1]= arr[index];
   index--;
   }
   arr[index]==x;

2、二分排序:

function binarySearch(data,dest, start,end){
   var end = end || data. length- 1,
       start = start || 0,
       m= Math.floor((stant + end) / 2);
  if(data[m] == dest){
       return m;
  }
  if(dest < data[m]){
      return binarySearch(data, dest,0, m- 1);
  }else {
      return binarySearch(data, dest, m+ 1,end);
  }
  return false;
  }

3、希尔排序:

function shellSort(arr) {
   var len = arr . length,temp,gap=1;
   while(gap <len /5){
   gap=/ gap* 5+1;
   }
   for(gap; gap >0; gap= Math.floor(gap/ 5)){
       for(var i = gap;i <.len; i++){
           temp= arr[i];
           for(var j=i- gap;i>=0 && arr[j] > temp; i-= gap){
               arr[j +gap] =arr[i];
           }
           arr[j+ gap] =temp;
      }
}
return arr;
}

4、冒泡排序:

function sort(elements){
    for(var i =0; i< elements.length - 1; i++){
       for(var j= 0;j< elements.length-i-1; j++){
           if(elements[j]> elements[j +1]){
               var swap = elements[j];
               elements[j]= elements[j +1];
               elements[j +1]= swap;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值