当前位置: 首页 > news >正文

趣味算法------猴子吃桃(循环,递归双重解法)

题目描述


猴子第一天摘下若干个桃子,当天吃了一半,后面又多吃一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。后面每天猴子都吃了前一天剩下的一半零一个。到第十天想再吃时,只剩下一个桃子。求第一天共摘了多少桃子。

输入格式
无。

输出格式
一个整数。

解题思路:

        这个题目可以使用递归求或者循环求和解出。

        循环求和:

            我们可以初始化 n 为最后一天的桃子数目 1,然后经过一次循环让n变成倒数第二天的桃子数目 n = 2*(n+1),重复循环9次得到最初的桃子数目。

        递归求和:

        因为我们知道当天的桃子数目为前一天的桃子数目加上1再乘以二倍。所以递归函数的返回值为 2*(fun(n-1)+1),fun(n)表示第n天的桃子数目,退出递归的边界条件为n==1时返回1。

具体代码:

循环方案代码:

#include<stdio.h>
int main(void)
{int n = 1,i;for(i = 0;i<9;i++){n = 2*(n+1);}printf("%d",n);
}

递归方案代码:

#include<stdio.h>
int fun(int n)
{if(n == 1)return 1;return 2*(fun(n-1) + 1);
}
int main(void)
{printf("%d",fun(10));
}

总结:

        解题的方法很简单,但是这道题反映了一个算法的经典的思想,已知结果求初始过程。

实则这道题也有其他的变种,比如老鼠藏奶酪问题。而且这道题也并不局限10天。


http://www.mrgr.cn/news/11289.html

相关文章:

  • java一键生成数据库说明文档html格式
  • 【Python机器学习】NLP概述——深度处理
  • tomcat利用 nginx 反向代理
  • C++ 模板
  • HTML静态网页成品作业(HTML+CSS)——24节气之冬至介绍(1个页面)
  • ssrf+redis未授权访问漏洞复现
  • 《黑神话:悟空》横空出世:全新国产3A里程碑之作
  • Golang安装与环境配置
  • 在Kibana中查询使用条件ES索引数据
  • 数据结构与算法——动态规划
  • 基于状态机实现WIFI模组物联网
  • Elasticsearch:使用 semantic_text 进行语义搜索
  • 衡石科技BI的API如何授权文档解析
  • 【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_SparkLine.cs
  • 分享一个基于python的零食销售数据采集与可视化分析系统django爬虫项目大数据源码(源码、调试、LW、开题、PPT)
  • SpringBoot项目启动后自动执行方法
  • XML 数据格式介绍及其应用
  • 【区块链 + 智慧文旅】虎彩小虎智数营销平台 | FISCO BCOS应用案例
  • TLB的刷新方式--linux 2.4
  • 分意图 Prompt 调试、后置判别改写、RLHF 缓解大模型生成可控性