近期面试两次碰到这道题,很有意思,哈哈,所以现在写下来纪念一下。

题目

一个猴子来到山里的一棵桃树下,发现有一堆桃子。第一天它吃掉一个,然后拿走一半,回到家里,把消息告诉第二个猴子。第二天第二个猴子也来了,又吃掉一个,然后拿走了一半,回到家,告诉第三个猴子。第三个猴子也是吃掉一个,然后拿走了一半。以此类推,第10天,第10个猴子来到时,发现还剩下1个桃子。求第一天总共有多少个桃子。(优先递归程序)

分析

这道题要求使用递归程序,所以首先要理解递归。递归就是循环调用自己本身。当然递归要有结束条件,不然就是无限循环调用了。
这里的结束条件就是第10天时,还剩下一颗桃子

做这些题目,最好多画图,多举例,然后得出规律,最后去验证规律是否正确。比如以下分析:

从最后一天往前推算,n1,n2,n3,n4,n5......n10表示第n天的桃子数量
天数  桃子数量
1天: 2*n2+1
2天: 2*n3+1
3天: 2*n4+1
4天: 2*n5+1
5天: 2*n6+1
6天: 2*n7+1
7天: 2*n8+1
8天: 2*n9+1
9天: 2*n10+1
10天:  1

推出函数式:

f(10) = 1
f(n) = 2*f(n+1)+1,  n取值范围[1,10)

程序编码

public class Main {public static void main(String[] args) {int r = stolenPeach(1);System.out.println(r);}/*** 猴子偷桃问题* @param n* @return*/public static int stolenPeach(int n){if(n == 10){return 1;}else{return  2*stolenPeach(n+1) + 1;}}
}

输出结果:1023

面试编程题-猴子偷桃相关推荐

  1. 猴子偷桃c语言编程题,猴子偷桃问题

    还是C语言版的问题,还是一个用递归的问题,很有意思. 五只猴子采得一堆桃子,猴子彼此约定隔天早起后分食.不过就在半夜里,一只猴子偷偷起来,把桃子平均分成五堆后,发现还多一个,它吃掉这个桃子,并拿走了其 ...

  2. 猴子偷桃c语言编程软件,c语言经典算法——猴子偷桃问题

    题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...

  3. python猴子偷桃递归_用matlab编程解决猴子吃桃问题

    满意答案 askasp9 2013.09.03 采纳率:50%    等级:12 已帮助:12317人 我也来凑个热闹,利用递归算法,得到桃子数目 将下面程序复制,建一个StealPeach.m文件, ...

  4. python猴子偷桃_Python实例100个(基于最新Python3.7版本)

    Python3 100例 原题地址: http://www.runoob.com/python/python-100-examples.html git地址: https://github.com/R ...

  5. java校招面试题_java校招面试编程题及答案.docx

    java校招面试编程题及答案 java校招面试编程题及答案 Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 集合框 ...

  6. C++ 编程练习——猴子吃桃问题

    目录 编程练习--猴子吃桃问题 编程练习--猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个:以此往后,到第十天早上想再吃时 ...

  7. java写猴子偷桃问题_猴子偷桃是什么意思

    满意答案 xucw111 2013.04.02 采纳率:42%    等级:11 已帮助:8003人 从字面意思理解就是猴子偷桃子涩!从引申意来讲这个问题就有点严肃了. 从前,有一个美丽的小村庄,名字 ...

  8. 实例021:猴子偷桃 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上

    实例021:猴子偷桃 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第1 ...

  9. python猴子偷桃 #题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第

    #猴子偷桃 #题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第 10 天早 ...

最新文章

  1. 慈溪计算机编程培训,慈溪Python编程培训
  2. Python 自动化办公之 Excel 拆分并自动发邮件
  3. LeetCode 26 号问题 删除数组中的重复项
  4. AWS EC2 Run Command特性新增多重云脚本
  5. JavaScript单线程运行机制与并发模型
  6. c语言实现判断两个子图是否同构问题_经典问题-回溯法-最大团问题
  7. AJAX JSON之讲解
  8. go语言设计初衷和优势
  9. 常用idea快捷键大全
  10. iOS小技能:模拟鼠标点击(针对Mac)
  11. 服装尺寸 html,超完整的各种服装尺寸对照表,总有你需要的
  12. 如何看待腾讯市值(按 2012 年 8 月 17 日股价)超过 Facebook?
  13. matlab求解线性规划问题的实例代码,用matlab求解线性规划问题.doc
  14. FPGA入门-腾讯云布道师团队-专题视频课程
  15. 基于MATLAB GUI界面的串口小助手
  16. 生物药、创新药、仿制药新项目立项调研、评估的重要手段
  17. 学习笔记(03):ArcGIS10.X入门实战视频教程(GIS思维)-坐标系与地理坐标系
  18. Z 字形变换(C语言)
  19. 一个AI小白如何理解近似匹配检索
  20. apple IDP 个人账户升级到公司账户(转)

热门文章

  1. JavaScript知识大纲(进阶篇)
  2. 三年级计算机信息考试题目,电脑考试三年级作文
  3. 转载:十句触动心灵的诗句
  4. Matlab求一元函数极值
  5. 华为AC+AP配置笔记
  6. Vijos P1474雷曼兔(csapc)
  7. 雷曼兔(vijos1474)
  8. mysql关于in大量数据的解决办法
  9. OpenCV截取图像的任意形状区域,规则的图形(圆、椭圆、矩形),不规则鼠标自己选择
  10. 数学思想方法猜想与反驳(4)猜想能力的培养