递归10小题

注:操作数字的数组均为int [ ]型,操作字符串均为char [ ]型
下面的10个问题很常见,在这里都是用递归解决的。涉及到数组的问题,需要有指针的知识。

1.求1到n的和

int getSum(int n)//求1到n的和
{if(n==1){return 1;}return n+getSum(n-1);	
}

2.遍历数组

void traverseArray(int * array,int length)
{if(length==1)//length是数组的长度,用来控制递归的深度以及结束递归{cout<<*array<<endl;//用length==1结束递归,只是为了遍历数组尾元素时不带逗号,美观一点return;}cout<<*array<<",";//依次遍历数组中的每个元素traverseArray(array+1,length-1);//
}

3.为数组的每个元素赋值

void inputForArray(int * array,int length)//给出数组首地址和数组长度
{if(length==0){return;}cin>>*array;inputForArray(array+1,length-1);
}

4.逆序遍历数组

例:数组[10,3,9,26,93,94]
输出:94,93,26,9,3,10


void traverseReversely(int * array,int length)
{if(length==1){cout<<array[length-1]<<endl;;return;}cout<<array[length-1]<<",";traverseReversely(array,length-1);		
}

5.颠倒数组中的元素

例:
原数组 [10,3,9,26,93,94]
颠倒后的数组 [94,93,26,9,3,10]

void reverse(int * array,int length)
{if(length==0 || length==1){return;}int temporary=array[0];array[0]=array[length-1];array[length-1]=temporary;reverse(array+1,length-2);
}

也可以是这样的递归

void reverse(int * array,int length)
{if(length==0 || length==1){return;}reverse(array+1,length-2);int temporary=array[0];array[0]=array[length-1];array[length-1]=temporary;
}

6.求出数组中的最大值

int getMaximum(int * array,int length)
{if(length==1){return *array;}int maximum;//避免二次调用getMaximum函数maximum=*array>(maximum=getMaximum(array+1,length-1))?*array:maximum;return maximum;
}

7.输入一个整数n(n>0),将其逆序输出

例:n=12345,输出为54321

void reveal(long number)
{if(number<=9)//当number变成一位数时,即刻输出number,结束递归{cout<<number<<endl;return;}cout<<number%10;//不断对10取余,输出个位数reveal(number/10);
}

8.字符串翻转

例:
输入 “IAmIronMan”
输出 “naMnorImAI”

void traverseStringReversely0(char * source)
{if(!*source)//if(!*source)、if(*source=='\0')、if(*source==0)三者意思相同{return;}traverseStringReversely0(source+1);cout<<*source;
}void traverseStringReversely(char * source)//在主程序中调用它
{traverseStringReversely0(source);//递归函数中缺少换行cout<<endl;//在这个函数中单独加上
}

9.任意输入一个整数n(n>0),将其输出为二进制形式

输入:6
输出:110

void transform(int number)
{if(number==0){return;}transform(number/2);cout<<number%2;
}

10.求100到999之间的水仙花数


int isDaffodilNumber(int number)	//number>=100 且 number<1000 判断number是不是水仙花数
{if(number>9){int one=number%10;one=one*one*one+isDaffodilNumber(number/10);return one;//返回各个位立方之后的和,若和与number相等,则为水仙花数,否则非水仙花数}else{return number*number*number;}}//主函数中调用getDaffodilNumber
void getDaffodilNumber(int begin,int end) //begin>=100,end>=100,begin>end
{										//给定三位数的范围,begin最小为100,end最大为1000if(begin>end){return;			}if(isDaffodilNumber(begin)==begin){cout<<begin<<endl;}getDaffodilNumber(begin+1,end);
}

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

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

相关文章

LDR6020,单C口OTG,充放一体新潮流!

PD&#xff08;Power Delivery&#xff09;芯片实现单Type-C接口输入和输出OTG&#xff08;On-The-Go&#xff09;功能&#xff0c;主要是通过支持USB Power Delivery规范和OTG功能的特定硬件和软件设计来实现的。以下是对这一过程的具体解释&#xff1a; 一、PD芯片基础功能 …

c++ gtsam/geometry/Pose3.h详细介绍

gtsam/geometry/Pose3.h 是 GTSAM 库中的一个头文件&#xff0c;定义了 Pose3 类。Pose3 用于表示三维空间中的位姿&#xff08;即位置和姿态&#xff09;&#xff0c;它是处理和表示三维空间变换的核心类之一。以下是对 Pose3 类的详细介绍&#xff1a; Pose3 类概述 Pose3 …

Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)

前言 我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用&#xff08;text2sql&#xff09;》 利用langchain 中create_sql_agent 创建一个数据库代理智能体&#xff0c;但是实测中发现&#xff0c;使用 create_sql_agent 在对话中&#x…

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

七、垃圾收集器ParNewCMS与底层三色标记算法详解

文章目录 垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法 垃圾收集器1.1 Serial收集器(-XX:UseSerialGC -XX:UseSerialOldGC)1.2 Parallel Scavenge收集器(-XX:UseParallelGC(年轻代),-XX:UseParallelOldGC(老年代))1.3 ParNew收集器(-XX:UseParNewGC)1.4 C…

RNN股票预测(Pytorch版)

任务&#xff1a;基于zgpa_train.csv数据,建立RNN模型,预测股价 1.完成数据预处理&#xff0c;将序列数据转化为可用于RNN输入的数据 2.对新数据zgpa_test.csv进行预测&#xff0c;可视化结果 3.存储预测结果&#xff0c;并观察局部预测结果 备注&#xff1a;模型结构&#xff…

MATLAB 可视化基础:绘图命令与应用

目录 1. 绘制子图1.1基本绘图命令1.2. 使用 subplot 函数1.3. 绘图类型 2.MATLAB 可视化进阶(以下代码均居于以上代码的数据定义上实现)2.1. 极坐标图2.3. 隐函数的绘制 3.总结 在数据分析和科学计算中&#xff0c;数据可视化是理解和解释结果的关键工具。今天&#xff0c;我将…

.bixi勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言 随着网络技术的飞速发展&#xff0c;网络安全威胁日益加剧&#xff0c;各种勒索病毒层出不穷。其中&#xff0c;.bixi勒索病毒&#xff08;也称为Bixi Ransomware&#xff09;作为一种新兴的网络安全威胁&#xff0c;对个人用户和企业数据安全构成了严重威胁。本文91数据…

PHP7 json_encode() 浮点小数溢出错误

原因已找到, 该现象只出现在PHP 7.1版本上 建议使用默认值 serialize_precision -1 即可 事情是这样的,项目里发现一个奇怪的现象,json_encode一个带浮点价格的数据, 出现溢出, 比如: echo json_encode(277.2); // 输出结果为: 277.199999999999989这明显是不能接受的, 数据…

【C++】基础知识 笔记

目录 1.1 基本结构&#xff1a; 1.2 注释 单行注释 多行注释 1.3 变量 1.4 常量 C定义常量两种方式 1.5 关键字&#xff08;标识符&#xff09; 标识符起名规则 1.1 基本结构&#xff1a; #include "iostream" using namespace std; //以上两行是预处理指令…

Text2vec -文本转向量

文章目录 一、关于 Text2vec1、Text2vec 是什么2、Features3、Demo4、News5、Evaluation英文匹配数据集的评测结果&#xff1a;中文匹配数据集的评测结果&#xff1a; 6、Release Models 二、Install三、使用1、文本向量表征1.2 Usage (HuggingFace Transformers)1.3 Usage (se…

标准库标头 <barrier>(C++20)学习

此头文件是线程支持库的一部分。 类模板 std::barrier 提供一种线程协调机制&#xff0c;阻塞已知大小的线程组直至该组中的所有线程到达该屏障。不同于 std::latch&#xff0c;屏障是可重用的&#xff1a;一旦到达的线程组被解除阻塞&#xff0c;即可重用同一屏障。与 std::l…

NISP 一级 | 5.5 账户口令安全

关注这个证书的其他相关笔记&#xff1a;NISP 一级 —— 考证笔记合集-CSDN博客 0x01&#xff1a;账户口令安全威胁 当用户在使用各种应用时&#xff0c;需通过账户和口令来验证身份从而访问某些资源&#xff0c;因此&#xff0c;账号口令的安全性非常重要。当前攻击者窃取用户…

深度学习之微积分预备知识点

极限&#xff08;Limit&#xff09; 定义&#xff1a;表示某一点处函数趋近于某一特定值的过程&#xff0c;一般记为 极限是一种变化状态的描述&#xff0c;核心思想是无限靠近而永远不能到达 公式&#xff1a; 表示 x 趋向 a 时 f(x) 的极限。 知识点口诀解释极限的存在左…

C语言 | Leetcode C语言题解之第412题Fizz Buzz

题目&#xff1a; 题解&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ char ** fizzBuzz(int n, int* returnSize) {/*定义字符串数组*/char **answer (char**)malloc(sizeof(char*)*n);for(int i 1;i<n;i){/*分配单个字符串…

React学习day06-异步操作、ReactRouter的概念及简单使用

13、续 &#xff08;8&#xff09;异步状态操作 1&#xff09;在子仓库中 ①创建仓库 ②解构需要的方法 ③安装axios ④封装并导出请求 ⑤在reducer中为newsList赋值 ⑥获取并导出reducer函数 2&#xff09;在入口文件index.js中&#xff0c;注入 3&#xff09;在App.js中&a…

Ansible自动化部署kubernetes集群

机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd&#xff0c;kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…

根据NVeloDocx Word模板引擎生成Word(六-结束)

前面几篇已经把E6开发平台配套的Word模版隐藏NVeloDocx的基础用法介绍了一遍&#xff0c;这些基础用法基本上可以完全覆盖实际业务的绝大部分需求。所以我们这一篇就介绍一些边边角角的内容&#xff0c;给本系列来一个首尾。 本篇的主要内容有&#xff1a; 1、汇总计算&#…

Java实现建造者模式和源码中的应用

&#x1f3af; 设计模式专栏&#xff0c;持续更新中&#xff0c; 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 Java实现建造者模式&#xff08;Builder Pattern&#xff09; 文…

ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码

1、停止mysql服务 $ service mysql stop 2、修改my.cnf文件 # 修改my.cnf文件&#xff0c;在文件新增 skip-grant-tables&#xff0c;在启动mysql时不启动grant-tables&#xff0c;授权表 $ sudo vim /etc/mysql/my.cnf [mysqld] skip-grant-tables 3、启动mysql服务 servic…