斐波那契数列 农夫养牛问题(转载)

203 篇文章 4 订阅

看到人家发的这个问题,觉得对思考问题的方式有帮助,特记之

问题描述:

一个农夫养了一头牛,三年后,这头牛每年会生出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);
   }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值