【Java算法学习】斐波那契数列问题-兔子产子经典问题
题目:如果一对两个月大的兔子以后每个月可以生一对兔子,而一对新生的兔子出生两个月后才可以生兔子。也就是说1月份出生的3月份才能生子。假定一年内兔子没有死亡事件,那么一年后共有多少对兔子。
/**
* 用递推算法求解斐波那契数列:Fn = Fn-2 +Fn-1;
*/
import java.util.*;
public class Fibonacci {
public static void main(String[] args) {
System.out.println("递推算法求解兔子产子问题");
System.out.println("请输入时间:");
Scanner input =new Scanner(System.in);
int n = input.nextInt();
int num = fibonacci(n);
System.out.println("经过"+n+"个月后,共能繁殖成"+num+"对兔子!");
}
public static int fibonacci(int n){
int t1,t2;
if (n==1||n==2) {
return 1;
}else {
t1 = fibonacci(n-1);
t2 = fibonacci(n-2);
return t1+t2;
}
}
}
【Java算法学习】java统计出字符串中的英文字母,空格,数字和其他字符的个数
package util;
public class CountStr {
/**
* 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
* @author Mr.Liao
* @date 2013-09-04
* 短信发送平台,短信字数控制查询方法
*/
public static void main(String[] args) {
//String str = "adasf AAADFD我是中文,,》123";
//String str = "金马甲高端商品交易平台--2013全城热恋克拉钻石项目预售,18个月,三万起步,年化8%,预购请致电展恒私人财富:18611297979";
String str = "展恒理财,2004年在北京成立,是国内最大的理财咨询类机构之一。获得国家颁发的独立基金销售牌照.是2013年中国网球公开赛10大核心赞助商之一。公司成立10年来,在为客户进行全面的家庭财务规划方面积累了十分丰富的经验。目前拥有中高端忠实客户10000多名,配置客户资金超过200亿元,位列行业排名前三强。";
System.out.println("[总字符数1]:"+countSum(str));
System.out.println("--------------------");
System.out.println("[总字符数2]:"+countSum2(str));
System.out.println("--------------------");
System.out.println("[总字符数3]:"+str.length());
}
public static int countSum(String str) {
int unicodeCount = 0;
int szCount = 0;
int zmCount = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= '0' && c <= '9') {
szCount++;
}else if((c >= 'a' && c<='z') || (c >= 'A' && c<='Z')){
zmCount++;
}else{
unicodeCount++;
}
}
System.out.println("Unicode:"+unicodeCount);
System.out.println("数字:"+szCount);
System.out.println("字母:"+zmCount);
int sum=szCount+zmCount+unicodeCount;
return sum;
}
public static int countSum2(String str) {
int abccount = 0;
int numcount = 0;
int spacecount = 0;
int othercount = 0;
char[] b = str.toCharArray();
for(int i = 0; i < b.length; i++){
if(b[i]>='a'&&b[i]<='z'||b[i]>='A'&&b[i]<='Z'){
abccount++;
}else if(b[i]>='0'&&b[i]<='9'){
numcount++;
}else if(b[i]==' '){
spacecount++;
}else{
othercount++;
}
}
int sum=abccount+numcount+spacecount+othercount;
System.out.println("字符串中含有的英文字母数为:" + abccount);
System.out.println("字符串中含有的数字数为:" + numcount);
System.out.println("字符串中含有的空格数为:" + spacecount);
System.out.println("字符串中含有的其他字符为:" + othercount);
return sum;
}
}