会当凌绝顶,一把反转你__递归数组反转

一、递归的概念

当函数的定义中,其内部操作又直接或间接地出现对自身的调用,则称这样的程序嵌套定义为递归定义。

递归就是将一个大型的复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,比如我们在字典上查一个词的意思,查到后发现这个词的解释中有个字的意思不能理解,那我们会继续去查这个字的意思,直到查到我们能够理解的程度,再逐渐返回来,逐层解释,最终理解这个词的意思。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。

二、scratch中的递归

在Scratch语言中,有一个指令的作用与函数相同,这就是自定义积木。

而自定义积木中,还有一种带参数的自制积木。

在scratch中的带参数的自定义积木也可以实现递归运算。最典型的就是通过递归实现列表的反转。

 首先建立3个变量,分别为数字,i和j,数字的作用是将1~10这10个数字加入列表中,i表示列表的第一项下标,而j表示列表的结尾的下标。建立一个带参数的自定义积木“递归列表反转”,将列表的项目数作为参数1和参数2使用。

        当参数1>=参数2,即从前往后的下标已经超过从后往前的下标时,就代表已经遍历完列表的全部项,此时这个脚本就可以停止了。若还没遍历完整个列表,那么就需要将列表的最后一项(参数2)给建立的名为“临时”的变量,此时“临时”变量为列表的最后一项的数字,也就是10。然后再将列表的最后一项替换为列表的第一项(参数1),此时列表中最后一项为1,可列表中第一项也为1,那么我们就可以替换为刚刚存储列表最后一项数字的“临时”变量,将其替换为10,这第一次反转也就完成了。

        之后我们再不断调用这个自制积木本身,将首项开始的下标增加1,而尾项开始的下标减1,再次进行列表的运算,实现递归反转列表。

三、C++中的数组反转

        C++中的数组和python列表的有些类似,但也有不同。在C++中,数组中的元素为同一数据类型,而且一般必须指定数组长度。python中的列表可以是不同的数据类型,而且长度可以动态增长。

         在C++中,用递归的方式实现数组反转的思想和scratch中递归的思想一样,也是通过数组的下标,来实现首位和尾位的交换。

        在程序中,递归是通过函数的调用来实现的。函数直接调用其自身,称为直接递归。间接调用其自身,称为间接递归。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值