1. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(使用递归去解决)
package day11;
/**
* 第一个月 1 1
* 第二个月 1 1
* 第三个月 1+1 2
* 第四个月 2+1 3
* 第五个月 3+1+1 5
* 第六个月 5+2+1 8
* 第七个月 8+3+1+1 13
* 第八个月 13+5+2+1 21
* 兔子的规律为数列1,1,2,3,5,8,13,21……
* @author PK
*/
publicclass Rabbit {
public static void main(String[] args){
for(int month=1;month<=20;month++)
System.out.println(Num(month));
}
public static int Num(int num){
if(num==1||num==2) {
return 1;
}else {
return Num(num-1)+Num(num-2);
}
}
}
2.统计大串中小串出现的次数.
package day11;
/**
* 分析:
* 1:定义一个统计变量,初始化值是0
* 2:先在大串中查找一次小串第一次出现的位置
* a:索引是-1,说明不存在,就返回统计变量
* b:索引不是-1,说明存在,统计变量++
* C:把刚才的索引+小串的长度作为开始位置截取上一次的大串,返回一个新的字符串,并把该字符串的值重新赋值给大串
* D:回到步骤2
*@author PK
*
*/
import java.util.Scanner;
public class Count {
public static void main(String[] args) {
System.out.println("请输入一段大的字符串:");
Scannersc=new Scanner(System.in);
String bigString=sc.nextLine();
System.out.println("请输入一段小的字符串:");
String smallString=sc.nextLine();;
int count =getCount(bigString,smallString);
System.out.println(smallString+"在大串中出现了:"+count+"次");
}
public static int getCount(StringbigString,String smallString){
// 定义一个统计变量,初始化值是0
int count = 0;
// 先在大串中查找一次小串第一次出现的位置
int index =bigString.indexOf(smallString);
// 索引不是-1,说明存在,统计变量++
while (index != -1) {
count++;
bigString =bigString.substring(index + smallString.length());
// 继续查找
index =bigString.indexOf(smallString);
}
return count;
}
}