• 猴子吃桃子的问题


    猴子吃桃子的问题


    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);
    	}
    
    }
    


  • 相关阅读:
    redis 储存对象
    redis key 查看器
    c# 控制台程序编写RabbitMQ 生产者
    C# 使用Topshelf 构建 基于 window 服务的 RabbitMQ消费端
    asp.net webapi 使用定时任务Hangfire
    asp.net webpi 中使用 ClientHelper 发起HTTP请求
    SQL Server 导入和导出向导 未在本地计算机上注册Mircrosoft.ACE.OLEDB.12.0 提供程序
    c# 使用Linq 表达式 对查询结果分组,保留价格最低的一条
    Asp.Net s请求报传输流收到意外的 EOF 或 0 个字节
    asp.net webapi 中使用rdlc 报表
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13314227.html
Copyright © 2020-2023  润新知