當前位置:首頁 » 編程軟體 » 原碼兔編程

原碼兔編程

發布時間: 2023-07-10 18:15:56

1. Java代碼編程 經典的兔子問題

這是斐波那契數列的問題

可以用遞歸,也可以用循環

遞歸:
public class Demo3 {
// 使用遞歸方法
private static int getFibo(int i) {
if (i == 1 || i == 2)
return 1;
else
return getFibo(i - 1) + getFibo(i - 2);
}

public static void main(String[] args) {
System.out.println("斐波那契數列的前20項為:");
for (int j = 1; j <= 20; j++) {
System.out.print(getFibo(j) + "\t");
if (j % 5 == 0)
System.out.println();
}
}

}
循環:
public class Demo2 {
// 定義數組方法
public static void main(String[] args) {
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("斐波那契數列的前20項如下所示:");
for (int i = 0; i < arr.length; i++) {
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i] + "\t");
}
}

}

2. 緊急!電腦編程高手請進!C#編程:兔子繁殖問題

樓主 晚上睡不著 於是給你用三種方法解答 嘿嘿 不要浪費哦

public class Program
{

static void Main(string[] args)
{

Console.Write("請輸入月數:");
string buffer = Console.ReadLine();
int Months = Convert.ToInt32(buffer); //結束月數
CalculateByObjectOriented(Months);
CalculateByRecursion(Months);
CalculateByMathematics(Months);
}

public static void CalculateByObjectOriented(int MonthCount) //面向對象方法實現
{
Console.Write("使用面向對象方法實現,總兔子數:{0}\n" , new RearRing(MonthCount).GetRabbitTotal());
}

public static void CalculateByMathematics(int MonthCount)
{
//能力有限,抽象不出表達式,偷懶一下
//畫一個節點圖,你就能清楚地看出為什麼了
int Period = 3; //出生後第幾個月能生小兔
int val1 = 0;
int val2 = 0;
int val3 = 1;
int RubbitsCount = 2;
if (MonthCount > 3)
{
RubbitsCount += val3 * 2;
for (int i = Period + 1; i < MonthCount + 1; i++)
{

val1 = val2;
val2 = val3;
val3 = val2 + val1;
RubbitsCount += val3 * 2;
}
}

Console.Write("使用數學方法實現,總兔子數:{0}\n", RubbitsCount);
}
public static void CalculateByRecursion(int MonthCount) //遞歸實現
{

Console.Write("使用遞歸實現,總兔子數:{0}\n" , GetFinalNum(0,MonthCount,0));
}

private static int GetFinalNum(int StartMonth, int MonthCount,int Level) //遞歸調用
{
int FinalNum=2;
int Period = 3; //出生後第幾個月能生小兔
for (int i = StartMonth; i < MonthCount; i++)
{
if (i - StartMonth >= Period-1)
{
FinalNum += GetFinalNum(i, MonthCount, Level + 1);
}
}
//For Debug
//Console.Write("當前級數:{0},共有兔子:{1}\n", Level, FinalNum);
return FinalNum;
}
}

public class RearRing
{
public IList<Rabbits> rabbitsList = new List<Rabbits>();
public RearRing(int MonthCount)
{
rabbitsList.Add(new Rabbits(this));
for (int i = 1; i < MonthCount; i++)
{
int count = rabbitsList.Count; //獲取當前兔子數
for(int j=0;j<count;j++)
rabbitsList[j].Grow();
}
}
public int GetRabbitTotal()
{
return Rabbits.RabbitNum;
}
public void Add()
{
Rabbits newRabbits = new Rabbits(this);
rabbitsList.Add(newRabbits);
}
}
public class Rabbits
{
public static int RabbitNum = 0; //兔子總數
private const int BornRabbitNum = 2; //每次出生多少只
private const int Period = 3; //出生後第幾個月能生小兔
private int Birthdate = 1; //題目不大明確,剛出生算幾個月大?在此假定剛出生1個月大,也就是說,"第三個月開始"表示兩輪後
RearRing _rearRing;
public Rabbits(RearRing RearRing)
{
this._rearRing = RearRing;
RabbitNum += BornRabbitNum;
}
public void Grow()
{
Birthdate+=1;
if (Birthdate >= Period)
Bear();
}
private void Bear()
{
_rearRing.Add();
}
}

3. 兔子繁殖問題 C語言編程

根據題意,得出以下結果:
年份:0 0.5 1 1.5 2 2.5 3 3.5 4 ...
兔子:1 1 2 3 5 8 13 21 34...
序號: 0 1 2 3 4 5 6 7 8...
所以發現規律:除前兩個外,後面的則是等於前兩個的種即:A0=1,A2=1,An=A(n-1)+A(n-2)
這樣程序就可以開始編制了
#include "stdio.h"
main()
{
int year,total,i,a1,a2;
printf("\n請輸入多少年後:");
scanf("%d",&year);
a1=1;
a2=1;
for(i=2;i<2*year;i++)
{
if(i%2==1)
{
a1=a1+a2;
total=a1;
}else{
a2=a1+a2;
total=a2;
}
}
printf("\n第%d年末總共會有%d對兔子",year,total);
}

4. C語言編程:兔子繁殖問題

如圖,此題難度較大,要用到隊列(我優化為循環隊列)(此題有兩個提問,都是我回答所以一樣)

#include<stdio.h>
#defineLIFETIME13 //兔子壽命,單位半年(年齡小於此!)
#defineINITNUM1 //初始兔子有多少對
main()
{
inthY=0; //兔子歷(就是時刻表):單位:半年
intnum[LIFETIME]={INITNUM,0}; //存儲不同年齡兔子的對數(初始為0歲1對)
//babyI下標代表0歲,往前年齡增大,越過數組下界跳到上界,所以babyI+1反而是最老兔子
intbabyI=0; //0歲兔子對應下標,年齡單位為半年
intloveNum=0; //可生育兔子數量
inttotalNum=INITNUM; //總計兔子數量
intage1I=LIFETIME-2; //1歲兔子對應下標(開始能生育)
intage5_5I=LIFETIME-11; //1歲、5.5歲兔子對應下標(剛好能生育、剛好不能生育年齡)
intn=30; //輸入n半年後!
while(hY<=n){
inti,j; //遍歷臨時變數。①展示兔子數量。
printf("第%.1f年 總計:%d對 可生育:%d對 ",(float)hY/2,totalNum,loveNum);
/*
for(i=0;i<LIFETIME;i++){
printf("%.1f歲 ",(float)i/2); //列印表頭
//printf("%d,%.1f歲 ",i,(float)(++i)/2); //列印表頭
}printf("單位:對 "); //換行*/
i=babyI; //顯示各年齡對應數量
j=0;
do{
//printf("%d ",num[i]);
if(hY<21){ //僅用於加 顯示
if((++j)%2==0)printf(" ");}
printf("%d",num[i]);
if(i>0)i--; //下標循環往左移動
elsei=LIFETIME-1;
}while(i!=babyI);
printf(" "); //換行

//②半年後
hY++; //時間過去半年
age1I=(age1I+1)%LIFETIME; //1歲數量(對)對應下標
age5_5I=(age5_5I+1)%LIFETIME;//5.5歲數量(對)對應下標
//printf("%d,%d ",age1I,age5_5I);
loveNum+=num[age1I]-num[age5_5I]; //可生育兔子數量(對)

babyI=(babyI+1)%LIFETIME; //新babyI設為原最老兔子的下標,
totalNum+=loveNum-num[babyI]; //每對大兔子可以生一對小兔子-死亡的老兔
num[babyI]=loveNum; //老兔的位置換成新兔
}
}

5. C語言編程雞兔同籠怎麼寫代碼

#include <stdio.h>
main()
{ unsigned long int a,b,c,d;
printf("這是一個用於算雞兔同籠的小程序(僅能輸入整數,使用回車鍵切換) 請輸入雞兔的總數");
scanf("%d",&a);
printf(" 請輸入雞兔腳的總數");
scanf("%d",&b);
if(b%2 != 0)
{
printf("輸入的雞兔腳的總數有錯誤!");
return 0;
}
c=(4*a-b)/2; // 雞的數目
d=a-c; // 兔的數目
if(c*2+d*4==b) printf("雞有%ld只 兔有%ld只",c,d);
else printf

6. C語言編程題目 兔子繁衍問題

方法一、用遞歸。

方法二、把兔子定義成結構,每個兔子自帶計時器變數,繁殖就是新建節點,構建結構鏈表。每次循環遍歷所有節點的計時變數大於3的就新建一個節點插入鏈表。最後統計節點數量。

我用方法1來寫:

#include <stdio.h>

int childbirth(int bMth,int gMth)//bMth:調用時傳0,gMth:經過的最大月數


{


int cnt=0,n=bMth,num=2;


while(n++<gMth+1)


if(cnt++>2)


num=num+childbirth(n,gMth+1);


return num;


}

int main()


{


int i,n;


printf("請輸入經過多少月:"),scanf("%d",&n);


for(i=1;i<=n;i++)


printf("經過%d個月後:兔子數量為:%d ",i,childbirth(0,i));


return 0;


}

熱點內容
androidondraw調用 發布:2025-02-07 12:09:22 瀏覽:187
linuxkill進程 發布:2025-02-07 12:09:17 瀏覽:196
c語言sqrt函數怎麼用 發布:2025-02-07 12:07:48 瀏覽:894
安卓手機怎麼不用手機id登錄 發布:2025-02-07 12:06:28 瀏覽:38
ceph緩存變慢 發布:2025-02-07 11:46:52 瀏覽:923
python做什麼用的 發布:2025-02-07 11:46:46 瀏覽:563
o2o與資料庫設計 發布:2025-02-07 11:35:27 瀏覽:929
ftp伺服器推薦 發布:2025-02-07 11:35:16 瀏覽:700
吉利星瑞豪華加6000是有哪些配置 發布:2025-02-07 11:25:18 瀏覽:971
李字加工編程 發布:2025-02-07 11:23:50 瀏覽:881