1.有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數爲多少?
(使用遞歸去解決)
分析:首先我們要明白題目的意思指的是每個月的兔子總對數;假設將兔子分爲小中大三種,兔子從出生後三個月後每個月就會生出一對兔子,
那麼我們假定第一個月的兔子爲小兔子,第二個月爲中兔子,第三個月之後就爲大兔子,那麼第一個月分別有1、0、0,第二個月分別爲0、1、0,
第三個月分別爲1、0、1,第四個月分別爲,1、1、1,第五個月分別爲2、1、2,第六個月分別爲3、2、3,第七個月分別爲5、3、5……
兔子總數分別爲:1、1、2、3、5、8、13……
於是得出了一個規律,從第三個月起,後面的兔子總數都等於前面兩個月的兔子總數之和,即爲斐波那契數列。
package com.hui.test;
/**
* 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
* 假如兔子都不死,問第二十個月的兔子對數爲多少?(使用遞歸去解決)
*
* */
public class Homework1 {
public static void main(String[] args) {
int i = 20;
System.out.println("兔子第"+i+"個月的總數爲:"+f(i));
}
public static int f(int x) {
//第一月和第二月都是1對
if(x == 1 || x == 2) {
return 1;
}else {//第三個月開始是之前兩個月的數量之和
return f(x-1)+f(x-2);
}
}
}
2:定義一個數組,比如:int[] arr = {13,24,57,69,80}使用二分查找查找這個數組中的24元素對應的索引
二分法思想:
假如有一組數爲3,12,24,36,55,68,75,88要查給定的值24.可設三個變量front,mid,end分別指向數據的上界,中間和下界,mid=(front+end)/2.
1.開始令front=0(指向3),end=7(指向88),則mid=3(指向36)。因爲mid>x,故應在前半段中查找。
2.令新的end=mid-1=2,而front=0不變,則新的mid=1。此時x>mid,故確定應在後半段中查找。
3.令新的front=mid+1=2,而end=2不變,則新的mid=2,此時a[mid]=x,查找成功。
4.如果要查找的數不是數列中的數,例如x=25,當第三次判斷時,x>a[mid],按以上規律,令front=mid+1,即front=3,出現front>end的情況,表示查找不成功。
3:統計大串中小串出現的次數
舉例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出
現了5次
package org.westos_10_作業;
/**
*需求
* 3:統計大串中小串出現的次數
舉例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出
現了5次
* */
public class Homework3 {
public static void main(String[] args) {
//定義一個字符串
String str = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
int count = 0;
for(int i=0;i<str.length()-3;i++) {
//使用subString方法獲得字符串的一部分並返回
String s = str.substring(i, i+4);
if("java".equals(s)) {
count++;
}
}
System.out.println("一共有"+count+"個java");
}
}