重谈奶牛的问题 一头奶牛从出生后的第四年开始生育小牛,以后每年生育一头. 给你一头刚出生的小奶牛,20年后共有多少头奶牛!!在网上看到这个问题,希望大家帮忙解决一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个很简单开始有1头n年后有0.5*(n-1)*(n-1)-0.5你核对下用微积分 int m = 0; int x=n/4; /n为规定的年数,此题n为20 for(int i=1;i<=x;i++) { for (int j = 1; j <= i;j++ ) { m++; } Console.Write('\n'); } Console.Write(m); /m为所产奶牛的数量!! Console.ReadLine(); 我的数学学得不好, 但擅长模拟:using System;using System.Collections.Generic;using System.Text;namespace Cow{ class Program { static void Main(string[] args) { List<Cow> list = new List<Cow>(); list.Add(new Cow()); //第一年只有一只牛 Farm farm = new Farm(list); farm.BreedXYear(20); //20年的养殖 int count = farm.CowCount; Console.WriteLine(count.ToString()); Console.ReadLine(); } } public class Cow { /// <summary> /// 年龄 /// </summary> protected int m_age; public Cow() { m_age=0; } /// <summary> /// 生长 /// </summary> public void Growth(out Cow smallcow) { m_age++; smallcow = BirthCow(); } public int Age { get { return m_age; } } /// <summary> /// 生小牛 /// </summary> /// <returns></returns> protected Cow BirthCow() { if (m_age > 3) { Cow cow = new Cow(); return cow; } else { return null; } } } //农场 public class Farm { private List<Cow> m_cowList; public Farm(List<Cow> cowList) { this.m_cowList = cowList; } /// <summary> /// 一年农场的养殖 /// </summary> public void BreedOneYear() { List<Cow> smallCowList=new List<Cow>(); foreach (Cow item in m_cowList) { Cow smallcow; item.Growth(out smallcow); if (smallcow != null) { smallCowList.Add(smallcow); //小牛加入小牛队伍 } } m_cowList.AddRange(smallCowList); //将小牛队伍加入大家庭队伍 } public void BreedXYear(int Xyears) { for (int i = 0; i < Xyears; i++) { BreedOneYear(); } } /// <summary> /// 返回牛的总数目 /// </summary> /// <returns></returns> public int CowCount { get { return m_cowList.Count; } } } }结果如下: 345 斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。 斐波那契数列 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子? 我们不妨拿新出生的一对小兔子分析一下: 第一个月小兔子没有繁殖能力,所以还是一对; 两个月后,生下一对小兔民数共有两对; 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对; ------ 依次类推可以列出下表: 经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12 兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233 表中数字1,1,2,3,5,8---构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。 这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加。 这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)上面这个题目跟这个差不多。 C# OpenFileDialog的SafeFileNames是什么作用啊,求解 列名提示错误 请问是否可以对Setup Project 进行自定义,谢谢 方法的回滚。请指点。。。 vs2005的c#的IDE里如果运行时改动代码,断点就会错行,是我没用好还是怎么着? richtextbox读取数据的问题 新手请教网上书店系统会员注册代码问题 如何 编写 c# 的泛型函数 menuStrip既然是可见的,为什么它的分类属于Component而不是Control? Graphics小问题~ :) C#与EXCEL文件导入导出的问题 请教下这样的写法吗!
开始有1头
n年后有0.5*(n-1)*(n-1)-0.5
你核对下
用微积分
int x=n/4; /n为规定的年数,此题n为20
for(int i=1;i<=x;i++)
{
for (int j = 1; j <= i;j++ )
{
m++;
}
Console.Write('\n');
}
Console.Write(m); /m为所产奶牛的数量!!
Console.ReadLine();
using System.Collections.Generic;
using System.Text;namespace Cow
{
class Program
{
static void Main(string[] args)
{
List<Cow> list = new List<Cow>();
list.Add(new Cow()); //第一年只有一只牛
Farm farm = new Farm(list);
farm.BreedXYear(20); //20年的养殖
int count = farm.CowCount;
Console.WriteLine(count.ToString());
Console.ReadLine();
}
} public class Cow
{
/// <summary>
/// 年龄
/// </summary>
protected int m_age; public Cow()
{
m_age=0;
} /// <summary>
/// 生长
/// </summary>
public void Growth(out Cow smallcow)
{
m_age++;
smallcow = BirthCow();
} public int Age
{
get
{
return m_age;
}
} /// <summary>
/// 生小牛
/// </summary>
/// <returns></returns>
protected Cow BirthCow()
{
if (m_age > 3)
{
Cow cow = new Cow();
return cow;
}
else
{
return null;
}
} } //农场
public class Farm
{
private List<Cow> m_cowList; public Farm(List<Cow> cowList)
{
this.m_cowList = cowList;
} /// <summary>
/// 一年农场的养殖
/// </summary>
public void BreedOneYear()
{
List<Cow> smallCowList=new List<Cow>();
foreach (Cow item in m_cowList)
{
Cow smallcow;
item.Growth(out smallcow);
if (smallcow != null)
{
smallCowList.Add(smallcow); //小牛加入小牛队伍
}
}
m_cowList.AddRange(smallCowList); //将小牛队伍加入大家庭队伍
} public void BreedXYear(int Xyears)
{
for (int i = 0; i < Xyears; i++)
{
BreedOneYear();
}
} /// <summary>
/// 返回牛的总数目
/// </summary>
/// <returns></returns>
public int CowCount
{
get
{
return m_cowList.Count;
}
} }
}结果如下: 345
斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔民数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
------
依次类推可以列出下表:
经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12
兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233
表中数字1,1,2,3,5,8---构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加。
这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)
上面这个题目跟这个差不多。