看到人家发的这个问题,觉得对思考问题的方式有帮助,特记之
问题描述:
一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?
面向对象的解决办法
private void button1_Click(object sender, System.EventArgs e)
{
Hashtable hs = new Hashtable();
Cow newcow0 = new Cow(); //初始化第一头牛
newcow0.Age = 0;
hs.Add(hs.Count,newcow0);
for(int i=0;i<10;i++)
{
if(hs.Count>0)
{
for(int j=0;j<hs.Count;j++)//每年检查下所有的牛,到了三年的要生小牛,并加到列表中,且所有的牛每牛年龄加1
{
((Cow)hs[j]).Age += 1;
if(((Cow)hs[j]).Age>2)
{
Cow newcow = new Cow();
newcow.Age = 0;
hs.Add(hs.Count,newcow);
}
}
}
}
textBox1.Text = hs.Count.ToString();
}
public class Cow
{
private int _age;
public int Age
{
get{return _age;}
set { _age = value;}
}
public Cow()
{
Age = 0;
}
}
纯数学解决办法(递归)
public int fibola(int num)
{
if(num<3)
{
return 1;
}
else
{
return fibola(num-1)+fibola(num-2);
}
}