導航:首頁 > 編程語言 > java編程兔子問題

java編程兔子問題

發布時間:2023-12-20 11:12:35

java程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....

public class Test {//用遞歸法計算兔子的規律
static long fib(int x){
if(x>2) return (fib(x-1)+fib(x-2));
else return 1;
}
public static void main(String[] args) {
for(int i=1;i<=24;i++){
long n=fib(i);
//算出的是對數.要算總數的法,*2就行
System.out.println("第"+i+"個月有兔子對數為"+n);
}
}
}

② JAVA龜兔賽跑問題

先讓兔子進入阻塞狀態,然後等烏龜跑完終點後喚醒兔子線程就行;下面是各個方法的配套使用(網上的,總結的很不錯)1. sleep() 方法:sleep() 允許 指定以毫秒為單位的一段時間作為參數,它使得線程在指定的時間
內進入阻塞狀態,不能得到CPU 時間,指定的時間一過,線程重新進入可執行狀態。
典型地,sleep() 被用在等待某個資源就緒的情形:測試發現條件不滿足後,讓線程阻塞一段時間後
重新測試,直到條件滿足為止。
2. suspend() 和 resume() 方法:兩個方法配套使用,suspend()使得線程進入阻塞狀態,並且不會
自動恢復,必須其對應的resume() 被調用,才能使得線程重新進入可執行狀態。典型地,suspend() 和
resume() 被用在等待另一個線程產生的結果的情形:測試發現結果還沒有產生後,讓線程阻塞,另一個
線程產生了結果後,調用 resume() 使其恢復。
3. yield() 方法:yield() 使得線程放棄當前分得的 CPU 時間,但是不使線程阻塞,即線程仍處於
可執行狀態,隨時可能再次分得 CPU 時間。調用 yield() 的效果等價於調度程序認為該線程已執行了足
夠的時間從而轉到另一個線程。
4. wait() 和 notify() 方法:兩個方法配套使用,wait() 使得線程進入阻塞狀態,它有兩種形式
,一種允許指定以毫秒為單位的一段時間作為參數,另一種沒有參數,前者當對應的 notify() 被調用或
者超出指定時間時線程重新進入可執行狀態,後者則必須對應的 notify() 被調用。

詳情請見http://blog.csdn.net/small____fish/article/details/7726468

③ .請編寫一個Java程序,能夠計算雞兔同籠問題,已知籠中共有9個頭和26隻腳,要求計算出該籠中有幾只兔子幾

public static void main (String[]args){
int rabbitsNumber=0;
int chickensNumber=0;
for(chickensNumber=0;chickensNumber<=9;chickensNumber++) { //遍歷雞的只數
rabbitsNumber=9-chickensNumber; //兔的只數等於9 - 雞
if(2*chickensNumber+4*rabbitsNumber==26) //雞和兔的腳總數是26
System.out.println("雞"+chickensNumber+"只,兔"+rabbitsNumber+"只");
}
}

④ java模擬龜兔賽跑問題用多線程實現

import java.util.Date;
public class Test extends Thread{ private int tortoise_walk = 0; // 烏龜已跑長度存放變數
private int rabbit_walk = 0; // 兔子已跑長度存放變數
private int finish = 1000; // 終點
private volatile boolean hasWinner = false;// 勝利者誕生 /**
*
* @ClassName: Tortoise_Run
* @Description: TODO(烏龜奔跑線程)
* @author guotingchao
* @date 2012-3-6 上午10:20:45
*
*/
class Tortoise_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (tortoise_walk % 100 == 0 && (tortoise_walk != 0||tortoise_walk>=finish)) { //烏龜每100米休息500毫秒
System.out.println("烏龜休息中………………");
Thread.sleep(500);
}
tortoise_walk++;
System.out.println("烏龜已跑"+tortoise_walk+"米");
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
*
* @ClassName: Rabbit_Run
* @Description: TODO(兔子奔跑線程)
* @date 2012-3-6 上午10:25:10
* @author guotingchao
*/
class Rabbit_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (rabbit_walk % 20 == 0 && (rabbit_walk != 0||rabbit_walk>=finish)) { //兔子每20米休息500毫秒
System.out.println("兔子休息中………………");
Thread.sleep(500);
}
rabbit_walk=rabbit_walk+5; //每秒跑5步
System.out.println("兔子已跑"+rabbit_walk+"米");
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void run(){
new Thread(new Rabbit_Run()).start();
new Thread(new Tortoise_Run()).start();
}
/**
* @Title: main
* @Description: TODO(
* 賽程1000米,兔子跑5米,烏龜跑1米,兔子每20米休息500毫秒,烏龜每100米休息500毫秒。誰先到終點就結束程序
* ,並顯示獲勝方。)
* @param @param args
* @param @throws Exception 設定文件
* @author guotingchao
* @return void 返回類型
* @throws
*/
public static void main(String[] args) throws Exception {
long temp_actionTime=System.currentTimeMillis();
System.out.println("比賽開始:"+new Date(temp_actionTime)+"毫秒");
Test t=new Test();
new Thread(t).start();
while(true){
if(t.tortoise_walk>=t.finish||t.rabbit_walk>=t.finish){
t.hasWinner=true;
break;
}
}
String winnnerName=t.tortoise_walk>t.rabbit_walk?"烏龜":"兔子";
long temp_lastTime=System.currentTimeMillis();
System.out.println(winnnerName+"勝利");
System.out.println("比賽結束:"+new Date(temp_lastTime)+"毫秒");
System.out.println("所耗時間:"+(temp_lastTime-temp_actionTime)+"毫秒");
System.out.println("兔子="+t.rabbit_walk+" 烏龜="+t.tortoise_walk);
}
}
//不知道兔子和烏龜的步長時間是否按每秒。 這里程序只考慮依次遞增頻率

⑤ java題,一開始一對兔子,每三個月生一對兔子,兔子不死,24個月後有多少兔子

//importjava.util.Scanner;
/**
*有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少對
*@authoryoung
*
*/
publicclassTuZiTest{
publicstaticvoidmain(String[]args){
// Scannersc=newScanner(System.in);
int[]tz=newint[24];
tz[0]=tz[1]=1;
intmonth=0;
while(month<24){
if(month==0||month==1){

}else{
tz[month]=tz[month-1]+tz[month-2];
if((month+1)%3==0){
System.out.println("第["+(month+1)+"]個月的兔子對數:"+tz[month]);
}
}
month++;
}
}
}

⑥ 請教:用JAVA編程計算兔子數量問題

遞歸

intf1=1;//一個月大的兔子
intf2=1;//二個月大的兔子
intfn=1;//兔子總數
for(inti=3;i<25;i++){
fn=f1+f2;
f2=f1;
f1=fn;
System.out.println(i+","+fn);
}
閱讀全文

與java編程兔子問題相關的資料

熱點內容
得物app用什麼方式出售 瀏覽:783
linuxandroid模擬器下載 瀏覽:971
php類常量訪問 瀏覽:586
視頻文件壓縮工具 瀏覽:13
什麼什麼佳人app 瀏覽:6
施耐德cfc編程 瀏覽:307
如何把pdf文件轉成圖片 瀏覽:534
張劍閱讀150篇pdf 瀏覽:356
拉卡拉收款寶app叫什麼名 瀏覽:340
c4d動態解壓 瀏覽:711
多個pdf合並為一個 瀏覽:312
程序中的編譯執行 瀏覽:32
plc控制與單片機控制 瀏覽:884
如何讓安卓手機操控電腦 瀏覽:187
電腦電銷加密電話號碼破解 瀏覽:506
世界史綱pdf 瀏覽:135
湖北社保年審app叫什麼名字 瀏覽:853
邁達克雲伺服器 瀏覽:598
mfc深入淺出從mfc設計到mfc編程 瀏覽:82
螢石雲伺服器連接設置 瀏覽:326