递归问题(c++)

news2024/12/15 21:35:39

递归设计思路


数列递归 : 如果一个数列的项与项之间存在关联性,那么可以使用递归实现 ;
原理 : 如果一个函数可以求A(n),那么该函数就可以求A(n-1),就形成了递归调用 ;
注意: 一般起始项是不需要求解的,是已知条件

这就是一个典型的递归问题。

假如有一个小和尚,3岁上山,老和尚每年给小和尚讲一遍,一直讲到18岁。

用代码实现这个问题。

#include<iostream>
#include<iomanip>
using namespace std;
void func();
int age = 3;
int main()
{
	func();
	return 0;
}
void func()
{
	if(age == 18) return;
	cout<<"从前有座山,山里有祖庙,庙里有个老和尚在给小和尚讲故事,讲的什么呢?"<<endl;
	age++;
	func();
}

递归求解问题的过程 :


第一步 : 找出规律
第二步: 函数调用自己求解前面的项
第三步: 交代起始项,让递归能够停止

目录

递归设计思路

递归求解问题的过程 

数数小木块

题目描述

统计每个月兔子的总数

题目描述

求s的值

题目描述

数列求和

题目描述

数数小木块

题目描述


在墙角堆放着一堆完全相同的正方体小木块,如下图所示:
因为木块堆得实在是太有规律了,你只要知道它的层数就可以计算所有木块的数量了。


输入
只有一个整数 n ,表示这堆小木块的层数,已知 1≤n≤100 。
输出
只有一个整数,表示这堆小木块的总数量。

#include<iostream>
#include<iomanip>
using namespace std;
int func(int x);
int main()
{
	int n;
	cin>>n;
	int sum =  0;
	for(int i = 1;i<=n;i++)
	{
		sum = sum + func(i);
	}
	cout<<sum;
	return 0;
}
int func(int x)
{
	if(x==1) return 1;
	return x + func(x-1);
}


统计每个月兔子的总数

题目描述


有一对兔子,从出生后第3个月起每个月都生一对兔子,一对
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
问第n个月(n<=50)的兔子总数为多少对?
输入
输入1个整数n,表示第几个月
输出
第n个月兔子的总数量有多少对?                      
样例
输入复制
9
输出复制
34

#include<iostream>
#include<iomanip>
using namespace std;
int func(int x);
int main()
{
	int n;
	cin>>n;
	cout<<func(n);
	return 0;
}
int func(int x)
{
	if(x==1) return 3;
	return func(x-1) + func(x-2);
}

求s的值

题目描述


求S=1+2+4+7+11+16…的值刚好大于等于 5000时S 的值。
输入

输出
一行,一个整数

#include<iostream>
#include<iomanip>
using namespace std;
int func(int x);
int main()
{
	int n;
	cin>>n;
	cout<<func(n);
	return 0;
}
int func(int x)
{
	if(x==1) return 1;
	if(x==2) return 2;
	int he = func(x-1) + func(x-2);
	return he;
}

数列求和

题目描述


有一数列如下: 1 2 4 7 11 16 22 …… 试求该数列前N 项之和。
输入
一个整数N ( 0<N<1000 )。
输出
一个整数。
输入复制
6
输出复制
41

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int cnt = 1;
	for(int i = 1;i<=n;i++)
	{
		cnt = cnt+i+2;
	}
	cout<<cnt;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

Linux shell的七大功能 --- history

1.直接输入“history” 这个命令可以显示出曾经使用过的命令&#xff08;最近时间的500条&#xff09; history 2.“history”命令也可以搭配其他命令一起使用。 例&#xff1a;history | grep "vim"&#xff0c;找出所有包含“vim”的记录&#xff1b; 也可以搭配…

C# 探险之旅:第九节 - 循环(for):无限循环的魔法轮盘!

嘿&#xff0c;勇敢的探险家们&#xff0c;欢迎回到C#的神秘世界&#xff01;在这一节里&#xff0c;我们将踏上一场关于循环的奇妙冒险&#xff0c;特别是那个能带我们无限次探险的“for循环”&#xff01;准备好了吗&#xff1f;让我们一起揭开for循环的神秘面纱&#xff0c;…

基于回溯法解决八皇后问题+以位运算方法优化n皇后问题(算法与数据结构期末设计)

文章目录 基于回溯法解决八皇后问题以位运算方法优化n皇后问题1. 八皇后问题问题描述2.回溯法求八皇后&#xff08;n皇后&#xff09;问题①由四皇后问题引入②皇后的占位问题③皇后的放置过程④放置过程中的问题⑤回溯算法核心⑥回溯算法的求解过程⑦验证算法和代码实现LeetCo…

python学opencv|读取图像(九)用numpy创建黑白相间灰度图

【1】引言 前述学习过程中&#xff0c;掌握了用numpy创建矩阵数据&#xff0c;把所有像素点的BGR取值设置为0&#xff0c;然后创建纯黑灰度图的方法&#xff0c;具体链接为&#xff1a; python学opencv|读取图像&#xff08;八&#xff09;用numpy创建纯黑灰度图-CSDN博客 在…

若依实现图片上传时自动添加水印

文章目录 总体思路1. 修改通用上传方法2. 去除文件路径前两级目录3. 添加水印方法运行效果总结 为了解决图盗用&#xff0c;并有效保护图片版权&#xff0c;若依项目需要实现一个功能&#xff1a;上传图片时&#xff0c;自动在图片上添加水印。这不仅可以有效防止盗用&#xff…

[C#与C++交互] 跨进程通信NamedPipes

目录 1、前言 2、什么是命名管道&#xff1f; 3、实现步骤 4、示例代码 4.1 C 服务器代码 4.2 C# 客户端代码 5、运行步骤 6、注意事项 7、应用场景 8、优缺点 9、总结 1、前言 在 C# 和 C 应用程序之间进行数据交换时&#xff0c;命名管道&#xff08;Named Pipes…

ubuntu+ros新手笔记(三)

系统ubuntu22.04 ros2 humble 1. 设置ubuntu终端字体大小 点击Terminal右上角的三条横线—>Preferences—>Unnamed—>Text—>勾选Custom font—>点击右侧的字号&#xff08;我的显示的是12&#xff09;—>最下方Size处设置字号大小—>Select—>设置完…

使用echarts实现3d柱状图+折线图

以下代码有问题请直接问国内直连GPT/Claude HTML 需要注意threeDchart一定要设置宽度高度&#xff0c;不然图不显示,然后echarts版本不要太低&#xff0c;不然也不显示 <div id"threeDchart" class"threeDchart"></div>js set3DBarChart2(dat…

蓝桥杯新年题解 | 第15届蓝桥杯迎新篇

蓝桥杯新年题解 | 第15届蓝桥杯迎新篇 2024年的蓝桥杯即将拉开序幕&#xff01;对于许多编程爱好者来说&#xff0c;这不仅是一次展示自我能力的舞台&#xff0c;更是一次学习和成长的机会。作为一名大一新生的小蓝&#xff0c;对蓝桥杯充满了期待&#xff0c;但面对初次参赛的…

计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)

发现了一个使用Selenium的find_element模块&#xff0c;快速获取文字和表格的方法&#xff0c;很实在&#xff0c;以后爬网的时候&#xff0c;就不用beautifulSoup 和 pandas的read_html 混起来用了&#xff01; 文字部分&#xff1a;实现网络节点下&#xff0c;某个节点下的其…

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程&#xff08;16&#xff09;&#xff1a;标准化JSON报告&Gherkin格式命令行报告 前言一、创建Feature文件二、创建步骤定义文件三、生成Cucumber格式的JSON报告四、使用Gherkin格式的命令行报告五、将BDD报告集成到Jenkins中总结 前言 在自动…

HDR视频技术之七:逆色调映射

HDR 技术近年来发展迅猛&#xff0c;在未来将会成为图像与视频领域的主流。当前 HDR 内容非常短缺&#xff0c;限制了 HDR 视听节目的广泛应用。逆色调映射(Inverse Tone Mapping)应运而生&#xff0c;它是一种用来将 SDR 源信号转换为 HDR 源信号的技术&#xff0c;可以应用于…

迎接全新的 Kotlin 支持 – K2 模式:基本信息

K2 模式有什么作用&#xff1f; K2 模式是 IntelliJ IDEA 中 Kotlin 支持的新实现&#xff0c;它可以提高 IDE 的稳定性&#xff0c;同时也会为支持未来 Kotlin 语言功能奠定基础。 K2 模式与 Kotlin K2 编译器有什么区别&#xff1f; K2 编译器负责编译 Kotlin 语言 2.0 或…

黑马程序员Java项目实战《苍穹外卖》Day12

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现&#xff1a;工作台、数据导出 工作台效果图&#xff1a; 数据导出效果图&#xff1a; 在数据统计页面点击数据导出&#xff1a;生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…

活动报名:Voice Agent 开发者分享会丨RTE Meetup

引入 voice agent 的口语学习应用 Speak 估值已达 10 亿美元 Voice Agent 开发者分享会 一同探索语音驱动的下一代人机交互界面&#xff0c;一场 voice agent builder 的小规模深度交流会。 RTE Meetup 迎来第六期&#xff01;12 月 15 日&#xff08;周日&#xff09;上午&…

优化你的 3D Tiles:性能与质量的平衡

优化你的 3D Tiles&#xff1a;性能与质量的平衡 在现代的三维场景渲染中&#xff0c;3D Tiles 是一种强大的技术&#xff0c;它能以高效、分级加载的方式呈现海量的三维数据。然而&#xff0c;优化 3D Tiles 以实现性能与质量的平衡&#xff0c;却是一个复杂且关键的任务。本…

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具&#xff0c;广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置&#xff0c;以高效监控服务&#xff0c;并确保系统的可靠性和可维护性。 一、Prometheus 简介 Prometheus 是一个功能…

SEC_ASA 第一天作业

拓扑&#xff1a; 实验需求&#xff1a; 注意&#xff1a;在开始作业之前必须先读“前言”&#xff0c;以免踩坑&#xff01;&#xff01;&#xff01;&#xff08;☞敢点我试试&#xff09; 按照拓扑图配置VLAN连接。 注意&#xff1a;ASA防火墙的 Gi0/1口需要起子接口&#x…