1、递归兔子对数练习题
package homework;
import java.util.Scanner;
/* 问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子
* 都不死,问第二十个月的兔子对数为多少?(使用递归去解决)
* 分析:
* 月份 第一对兔子生的兔子 第二对兔子生的兔子 第三对兔子生的兔子……
* sum=1 1 0 0 0
* sum=1 2 0 0 0
* sum=1 3 0 0 0
* sum=2 4 1 0 0
* sum=3 5 2 0 0
* sum=4 6 3 0 0
* sum=sum+1+(7-6) 7 4 1 0
* sum=sum+1+(8-6) 8 5 2 1 ……
* …… …… …… …… ……
* sum=sum+1+(20-6) 20 17 14 13 …… 1
* sum=sum+1+(N-6) N N-3 N-6 N-7 …… 1
*
* */
public class RibbitDemo {
public static void main(String[] args){
System.out.println("请输入你要统计兔子对数的月份:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println("第"+n+"月兔子对数是:"+getSum(n));
}
//得到兔子的对数
public static int getSum(int n){
//原本有一对兔子
int sum=1;
//如果是第三个月以后,最初的兔子成熟
if(n>3){
for(int i=4;i<=n;i++){
sum++;
//第六个月以后第一胎兔子成熟;
//且以后每月新增加一对兔子成熟
if(i>6){
sum+=(i-6);//第i月兔子的对数等于前一个月总数+(i-6)
}
}
}
//返回兔子总对数
return sum;
}
}2、统计大串中小串出现的次数
举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出
现了5次
package homework;
import java.util.Scanner;
public class CountDemo {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个长字符串:");
String str=sc.nextLine();
System.out.println("请输入你要找的字符串:");
String str1=sc.nextLine();
System.out.println("你所输入的长串中你要找的字符串的个数是:"+getCount(str,str1));
}
//定义一个方法来获取要找的字符串的个数
public static int getCount(String str,String str1){
//定义一个统计变量
int count=0;
int index=0;
//若长串中不存在你要找的字符串用indexOf();返回-1,则不需要再找了
while(true){
//每次循环后,字符串从上一次找到的首地址之后开始找
index=(str.indexOf(str1,index))+1;
if(index==0)
break;
count++;
}
return count;
}
}原文:http://13355940.blog.51cto.com/13345940/1978699