迷宫左零


私信TA

用户名:strjok

访问量:1769

签 名:

等  级
排  名 19397
经  验 676
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 北京邮电大学
专  业

  自我简介:

解题思路:


递归与循环的思路往往有着相似之处,递归可以解一般循环也可以解。除此之外,尽管递归逻辑上比较直白,而且写起来比较简洁(主函数只有一行),但运行速度未必有循环快。

这里采用递归,在一个递归函数中一体化实现输入与输出过程。输入过程是压栈过程,输出则是退栈过程,利用栈的特性实现题目中的核心逻辑“反向”。相比于普通的读进数组再读出去有两大好处:

1、局部变量内存申请在栈上,函数结束后内存会释放。如果读入数组中,则会占用一定的内存。我们只是希望实现一个反向的输出,并没有长期存储的必要。

2、可扩展性好。如果数组长度发生改变,读数组的方法需要修改数组大小、循环体等多处,采用递归则只需修改递归层数一个数字。


注意事项:


先进行cin压栈,然后进入递归,然后cout退栈,顺序不能乱。只需想象递归到头返回后第一个执行的操作是最后一层的cout,就不会写错。

参考代码:

#include<iostream>
using namespace std;

int InversePrint(int i)
{
    int temp; //局部变量
    if(i<10) //递归层数
    {
        cin>>temp; //压栈
        InversePrint(i+1); //递归
        cout<<temp<<" "; //退栈
    }
    else
        return 0;
}

int main()
{
    InversePrint(0);
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

萌新看不懂
2021-02-01 15:26:27
  • «
  • 1
  • »