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

递归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);
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一篇文章,讲清SQL的 joins 语法
  • 架构设计——概念和基础
  • RabbitMQ(高阶使用)死信队列
  • 【机器学习】9 ——最大熵模型的直观理解
  • 集群聊天服务器项目【C++】项目介绍和环境搭建
  • ego-planner开源代码之traj_server数据流分析
  • 如何用安卓玩Java版Minecraft,安卓手机安装我的世界Java版游戏的教程
  • 深入浅出通信原理
  • Renesas R7FA8D1BH (Cortex®-M85)控制ISLS29035
  • QT + WebAssembly + Vue环境搭建
  • eclipse使用 笔记02
  • 【Linux系统编程】用互斥量和信号量加锁STL容器,避免并发问题
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】005 - Kernel 入口 C 函数 start_kernel() 源码分析
  • 在linux下,找到指定命令对应的路径信息
  • MCN跨国企业如何从0到1搭建ITSM运维体系
  • 【Amaple教程】5. 插件
  • Android开源项目规范总结
  • android图片蒙层
  • ES6系统学习----从Apollo Client看解构赋值
  • HomeBrew常规使用教程
  • JAVA_NIO系列——Channel和Buffer详解
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript弹出层-初探
  • Mysql5.6主从复制
  • nfs客户端进程变D,延伸linux的lock
  • Redis中的lru算法实现
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • WebSocket使用
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于组件的设计工作流与界面抽象
  • 马上搞懂 GeoJSON
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 网络应用优化——时延与带宽
  • 一份游戏开发学习路线
  • 责任链模式的两种实现
  • Java数据解析之JSON
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​业务双活的数据切换思路设计(下)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #pragma multi_compile #pragma shader_feature
  • $(function(){})与(function($){....})(jQuery)的区别
  • (06)Hive——正则表达式
  • (52)只出现一次的数字III
  • (LeetCode) T14. Longest Common Prefix
  • (备份) esp32 GPIO
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (力扣题库)跳跃游戏II(c++)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十三)Maven插件解析运行机制
  • (原創) 物件導向與老子思想 (OO)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)jQuery 基础