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