zoukankan      html  css  js  c++  java
  • 一天一道算法题(2)---如何仅用递归函数逆序一个栈

    • 题目

    只能用递归函数实现栈中元素逆序。例如,1,2,3,4,5依次压栈,栈中元素为从栈顶到栈底5,4,3,2,1。要求只用递归实现栈的逆序。

    • 解答

    设计两个递归函数

    递归函数一:将栈的栈底元素返回并移除 getAndRemoveLastElement

    递归函数二:逆序一个栈 reverse

     1   public int getAndRemoveLastElement(Stack<Integer> stack) { //得到栈底元素并它移除,并且其它元素压回栈
     2         int result = stack.pop();
     3         if (stack.isEmpty()) {
     4             return result;
     5         } else {
     6             int last = getAndRemoveLastElement(stack);
     7             stack.push(result); //回溯,将其它元素重新压回栈
     8             return last; //返回栈底元素
     9         }
    10     }
    11     
    12     /**
    13      * 以1,2,3为例,从栈顶到栈底依次为3,2,1
    14      */
    15     public void reverse(Stack<Integer> stack) {
    16         if (stack.isEmpty()) {
    17             return;
    18         }
    19         int i = getAndRemoveLastElement(stack); //得到栈底元素
    20         reverse(stack); //递归,所以i依次为1,2,3
    21         stack.push(i);  //回溯,依次压入3,2,1
    22     }
    • 参考资料

    1. 《程序员代码面试指南》 左程云
  • 相关阅读:
    HttpServletRequest
    实现重定向
    HttpServletResponse
    Servlet简介和ServletContext
    JavaWeb 之 Http
    JavaWeb 之 Cookie
    Pycharm2019.3.2专业版激活
    How to Use Arrays and Vectors
    软件工程学习心得
    MySQL 连接
  • 原文地址:https://www.cnblogs.com/yangtong/p/6653997.html
Copyright © 2011-2022 走看看