------- android培训、java培训、期待与您交流! ----------
package com.itheima;
class GetSum {/**
* @param args
* 猴子吃桃的问题:猴子第一天摘下来N个桃子,当天就吃了一半,但是还不过瘾,又多吃了一个,
* 第二天早上又将剩下的桃子吃了一半,又多吃了一个,
* 以后每天早上都吃了前一天剩下的一半零一个,到第十天早上的时候就发现剩下一个桃子了.
* 求第一天一共摘下了多少桃子呢?
*
*解题思路:递归思想:刚摘下来N个桃子
*假设每一天没吃之前有num(n)个桃子
*第一天有N个 N= num(1)
*第二天有 num(2)=num(1)/2-1 num(1)=(num(2)+1)*2
*第三天有 num(3)=num(2)/2-1 num(2)=(num(3)+1)*2
*...
*
*反过来想
*第十天只有1个桃子num(10)=1
*那么第九天有num(9)=2*(num(10)+1);
*第八天有 num(8)=2*(num(9)+1);
*...
*第1天 N=2*(num(2)+1)
*
*求出N共需要迭代9次
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("桃子的总数是:"+getnum(1));
}
public static int getnum(int n)//迭代函数
{
if(n>10 || n<1)
System.out.println("输入数据不合法");
if (n == 10)//第十天有1个桃子
return 1;
else
return 2*(getnum(n+1)+1);
}
}
本文探讨了一个有趣的数学问题:猴子吃桃。通过递归算法,我们能够计算出第一天猴子摘下多少个桃子,使得在连续十天内,每天早上吃掉前一天剩下的一半再加一,最后剩下最后一个桃子。文章详细解释了解题思路并提供了一个实现代码。
647

被折叠的 条评论
为什么被折叠?



