猴子吃桃子的题目

    xiaoxiao2021-12-04  52

    1、问题背景

         有1只猴子第一天摘了若干桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下桃子的一半还多一个。到第10天早上想再吃时,就只剩下一个桃子了。问:这只猴子第一天共摘了多少个桃子?

    2、解题思路

         采用逆向思维,由后往前推,递归思想

    3、解决办法

    (1)直接推断         第十天:1         第九天:4         第八天:10         第七天:22         第六天:46         第五天:94         第四天:190         第三天:382         第二天:766         第一天:1534 (2)数学方法         运用递归方法         S10=1         S9=2(S10+1)         S8=2(S9+1)         ...         Sn=2Sn+1 +2         S1=2^9*S+2^9+......+2             =512+512+256+128+64+32+16+8+4+2=1534 (3)Java代码实现

    /** * * @title:MonkeyPeach.java * @Package:com.you.hbxs.model * @Description:<h3>猴子吃桃问题</h3> * @author:游海东 * @date:2016-2-27下午5:59:44 * @version V1.0 * */ package com.you.hbxs.model; /** * * 项目名称:HBXS * 类名称:MonkeyPeach * 类描述: * 创建人:游海东 * 创建时间:2016-2-27下午5:59:44 * 修改人:游海东 * 修改时间:2016-2-27下午5:59:44 * 修改备注: * @version V1.0 * */ public class MonkeyPeach { /** * * 方法名:getPeachNum * 方法类型:MonkeyPeach * 参数:@param days * 参数:@param peach * 参数:@return * @return :int * @throws */ public static int getPeachNum(int days,int peach) { if(days == 1) { return peach; } else { days--; peach = (peach+1)*2; return getPeachNum(days,peach); } } /** * * 方法名:main * 方法类型:MonkeyPeach * 参数:@param args * @return :void * @throws */ public static void main(String[] args) { int peachNum = getPeachNum(10, 1); System.out.println("桃子的个数:"+peachNum); } }
    转载请注明原文地址: https://ju.6miu.com/read-680416.html

    最新回复(0)