其他分享
首页 > 其他分享> > 猴子吃桃(递归)

猴子吃桃(递归)

作者:互联网

猴子偷桃

题目描述:

猴子第一天摘下若干桃子,当即吃了一半,觉得好吃不过瘾,于是又多吃了一个,,第二天又吃了前天剩余桃子数量的一半,觉得好不过瘾,于是又多吃了一个,以后每天都是吃前天剩余桃子数量的一半,觉得不过瘾,又多吃一个,等到第十天的时候,发现桃子只有一个。
需求:请问猴子第一天摘了多少个桃子?

分析:

设x为第x天,已知猴子第10天剩下一个桃子,那么可知第9天剩的桃子是第10天剩下数量+1,再总体×2,设第9天为x,那么第10天剩的桃子数为:f(x+1)有上述可推出 公式为:f(x) = (f(x + 1) + 1) * 2。
下面通过递归算法写出代码:

(代码main方法输出做了扩展,将10天到1天所有结果遍历输出)

代码:

递归方法:

public static int f(int n){
        if (n == 10) {
            return 1;
        } else {
            return (f(n + 1) + 1) * 2;
        }
    }

main方法

public static void main(String[] args) {
        for (int i = 10; i > 0; i--) {
            System.out.println("第"+i+"天剩:"+f(i)+"个果子。");
        }
    }

运行结果:

第10天剩:1个果子。
第9天剩:4个果子。
第8天剩:10个果子。
第7天剩:22个果子。
第6天剩:46个果子。
第5天剩:94个果子。
第4天剩:190个果子。
第3天剩:382个果子。
第2天剩:766个果子。
第1天剩:1534个果子。

标签:10,递归,果子,吃桃,猴子,天剩,int,桃子
来源: https://www.cnblogs.com/zhangyouren/p/16460002.html