黑马程序员_论坛活动:递归实现猴子吃桃

来源:互联网 发布:2016非农数据行情回顾 编辑:程序博客网 时间:2024/05/02 01:10

-------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);
}
}
原创粉丝点击