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;
}
}