练习

1、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(使用递归去解决)

package org.westos.homework;
/**
 * 求1到n的所有正数之和
 *  public static int f(int n){
 *    if(n==1){
 *    return 1;
 *    }
 *    return n+f(n-1);
 *  }
 * @author 小鑫
 *
 */
public class HomeWork3 {
  public static void main(String[] args) {
      int sum=0;
    for(int i=1;i<=20;i++){
        sum=sumRabbit(i);
    }
    System.out.println("共有"+sum+"只兔子");//共有6765只兔子

}
  public static int sumRabbit(int i){
      //当第一个月或者第二个月不生兔子
      if(i==1||i==2){
          return 1;
      }else{
          //
          return sumRabbit(i-1)+sumRabbit(i-2);
      }
  }
}

2、定义一个数组,比如:int[] arr = {13,24,57,69,80}使用二分查找查找这个数组中的24元素对应的索引(可以不写这个题,下去预习什么是二分查找)

package org.westos.homework;
/**
 * 二分查找是对一组有序的数字中进行查找,传递相应的数据,
 * 进行比较查找到与原数据相同的数据,
 * 查找到了返回1,失败返回对应的数组下标。
 * @author 小鑫
 *
 */
public class HomeWork2 {
   public static void main(String[] args) {
    int[] arr={13,24,57,69,80};
    System.out.println(getNumber(arr,57));//2
}
   public static int getNumber(int[] arr,int key){
       int low=0;
       int high=arr.length-1;
       if(low<=high){
           int mid=(low+high)/2;
           if(key==arr[mid]){
               return mid;
           }else if(key<arr[mid]){
               return getNumber(arr,mid-1);
           }else if(key>arr[mid]){
               return getNumber(arr,mid+1);
           }
       }
       else{
           return -1;
       }
    return key;
   }
}

3、统计大串中小串出现的次数
举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次

public class HomeWork01 {
  public static void main(String[] args) {
    String maxStr="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
    String minStr="java";
    System.out.println("java出现了"+getCount(maxStr,minStr)+"次");//java出现了5次
}
  public  static int getCount(String maxStr,String minStr){
      int count=0;
      for(int i=0;i<maxStr.length()-3;i++){
         String str=maxStr.substring(i, i+4);
          if(minStr.equals(str)){
              count++;
          }
      }
    return count;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值