题目内容

猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办法,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?

答案:
解析:

  解:本题的算法如下:

  第一步:a1←1;{第10天的桃子数,a1的初值}

  第二步:i←9;{计数器初值为9}

  第三步:a0←2×(a1+1);{计算当天的桃子数}

  第四步:a1←a0;{将当天的桃子数作为下一次计算的初值}

  第五步:i←i-1;

  第六步:若i≥1,转第三步;

  第七步:输出a0的值.

  伪代码如下:

  a1←1

  i←9

  If i≥1 Then

  a0←2×(a1+1)

  a1←a0

  i←i-1

  End If

  Print a0

  流程图如下图所示:

  分析:此题粗看起来有些无从着手的感觉,那么怎样开始呢?假设第一天开始时有a1只桃子,第二天有a2只,…,第9天有a9只,第10天有a10只.在a1,a2,…,a10中,只有a10=1是知道的,现要求a1,而我们可以看出a1,a2,…,a10之间存在一个简单的关系:

  a9=2×(a10+1),

  a8=2×(a9+1),

  …

  a1=2×(a2+1).

  也就是:ai=2×(ai+1+1),i=9,8,7,6,…,1.

  这就是此题的数学模型.

  再考查上面从a9,a8直至a1的计算过程,这其实是一个递推过程,这种递推的方法在计算机解题中经常用到.另一方面,这九步运算从形式上完全一样,不同的只是ai的下标而已.由此,我们引入循环的处理方法,并统一用a0表示前一天的桃子数,a1表示后一天的桃子数.


提示:

  这类题的解法是一个从具体到抽象的过程,具体方法是:

  (1)弄清如果由人来做,应该采取哪些步骤;

  (2)对这些步骤进行归纳整理,抽象出数学模型;

  (3)对其中的重复步骤,通过使用相同变量等方式求得形式的统一,然后简练地用循环解决.


练习册系列答案
相关题目

违法和不良信息举报电话:027-86699610 举报邮箱:58377363@163.com

精英家教网