猴子吃桃递归到最后一颗桃子,究竟吃了多少次?

2026-04-11 08:051阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计503个文字,预计阅读时间需要3分钟。

猴子吃桃递归到最后一颗桃子,究竟吃了多少次?

递归案例分析 + 猴子偷桃 + 问题描述:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子。

猴子吃桃递归到最后一颗桃子,究竟吃了多少次?

递归案例实践分析 猴子偷桃 题目描述:

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

分析:

设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个果子。

本文共计503个文字,预计阅读时间需要3分钟。

猴子吃桃递归到最后一颗桃子,究竟吃了多少次?

递归案例分析 + 猴子偷桃 + 问题描述:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子。

猴子吃桃递归到最后一颗桃子,究竟吃了多少次?

递归案例实践分析 猴子偷桃 题目描述:

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

分析:

设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个果子。