zoukankan      html  css  js  c++  java
  • 使用递归实现字符串的反转

    public String reverse(String str){
      if(str == null || str.length() <= 1){
        return str;

    }

      return reverse(str.subString(1)) + str.charAt(0);

    }

    return reverse(originStr.substring(1)) + originStr.charAt(0);这行语句中,originStr.charAt(0)是将originStr这个字符串的
    第一位拿出来;
    而reverse(originStr.substring(1))中的originStr.substring(1)表示把originStr这个字符串的索引为1及之后的字符(也就是originStr字符串
    的第二个字符以后的子串,即"23456")拿出来。所以,执行一次递归后,“123456”字符串被分解为“23456”+‘1’。
    由于return reverse(originStr.substring(1)) + originStr.charAt(0);这行语句中,reverse方法的存在,执行第二次递归,此时
    originStr=“23456”,所以执行完第二次递归后,“23456”分解为“3456”+‘2’。
    ...依次类推,最后一次调用reverse方法时,也就是originStr = "6",可以看出字符串"6"满足if(originStr == null || originStr.length() <= 1) 
    中的第二个条件,所以执行if条件下的语句,
    也就是返回originStr,即字符串"6"。所以整个调用栈就依次返回“6”+‘5’+‘4’+‘3’+‘2’+‘1’ = “654321”。
    最后,控制台输出打印“654321”。
  • 相关阅读:
    函数的调用惯例
    docker 强制删除镜像
    docker 安装 tomcat8
    阿里云 maven仓库地址配置
    ubuntu 18.04 安装搜狗输入法
    centos 监控进程,并自动重启
    intellj idea show "run dashboard" panel
    Centos7 服务器启动jar包
    maven centos7 环境变量
    linux关于IP,端口,防火墙相关命令
  • 原文地址:https://www.cnblogs.com/cn-chy-com/p/10839678.html
Copyright © 2011-2022 走看看