递归 反转字符串_使用递归反转字符串

递归 反转字符串

1.简介

在本文中,您将学习如何使用递归方法来反转字符串。 第一个程序是反转字符串,第二个程序将读取用户的输入。

在之前的文章中,我已经展示了如何不使用任何内置函数来反转字符串,以及如何反转字符串中的单词

2.什么是递归

递归方法是计算机科学中的一种方法,它用不同的输入调用相同的函数。

递归方法必须至少有一个参数。

这种方法很容易解决许多复杂的程序,但是您必须非常小心,否则会产生StackOverflow或内存不足错误。

3.使用递归反转字符串的示例程序

要理解该程序,您应该知道两个String类方法,它们是charAt()substring()方法。

package com.javaprogramto.w3schools.programs.string;public class StringReverseRecursion {public static void main(String[] args) {String s1 = "Welcome to the javaprogramto.com";String reversedS1 = reverseString(s1);System.out.println("String s1 before reversing : "+s1);System.out.println("Reversed String s1 : "+reversedS1);String s2 = "Another String s2";String reversedS2 = reverseString(s2);System.out.println("String s2 before reversing : "+s2);System.out.println("Reversed String s2 : "+reversedS2);}private static String reverseString(String sentense){if (sentense.isEmpty())return sentense;//Calling method Recursivelyreturn reverseString(sentense.substring(1)) + sentense.charAt(0);}
}

输出:

String s1 before reversing : Welcome to the javaprogramto.com
Reversed String s1 : moc.otmargorpavaj eht ot emocleW
String s2 before reversing : Another String s2
Reversed String s2 : 2s gnirtS rehtonA

4.另一个示例,从用户反向读取String

在此程序中,用户必须输入要反转的字符串。 扫描程序类nextLine()方法用于从用户键盘读取输入字符串,并将字符串值传递给递归方法reverseString()。

package com.javaprogramto.w3schools.programs.string;import java.util.Scanner;public class StringReverseRecursionFromUser {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("Enter String One");String s1 = scanner.nextLine();String reversedS1 = reverseString(s1);System.out.println("String s1 before reversing : "+s1);System.out.println("Reversed String s1 : "+reversedS1);System.out.println("Enter String Two");String s2 = scanner.nextLine();String reversedS2 = reverseString(s2);System.out.println("String s2 before reversing : "+s2);System.out.println("Reversed String s2 : "+reversedS2);}private static String reverseString(String sentense){if (sentense.isEmpty())return sentense;//Calling method Recursivelyreturn reverseString(sentense.substring(1)) + sentense.charAt(0);}
}

输出:

Enter String One
Reading from user
String s1 before reversing : Reading from user
Reversed String s1 : resu morf gnidaeR
Enter String Two
String entered by user
String s2 before reversing : String entered by user
Reversed String s2 : resu yb deretne gnirtS

5.结论

在本文中,我们已经看到了如何使用递归技术来反转String

本文显示的所有代码都在GitHub上

翻译自: https://www.javacodegeeks.com/2020/06/reverse-a-string-using-recursion.html

递归 反转字符串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jvm(4)-虚拟机性能监控与故障处理工具

【0】README0.1)本文文字描述转自 “深入理解jvm”,旨在了解 虚拟机性能监控与故障处理工具的基础知识(仅仅在于了解); 【1】概述1)给一个系统定位问题的时候,知识,经验是关键基础&a…

代码大全和新月神话_神话般的代码

代码大全和新月神话考虑以下代码段: int max 10; int a 0; while (true) {// do a thing that may result in an early return if (a > max) {break;} }throw new RuntimeException("It ran out of attempts");上面有一些WTF。 循环有点不可思议&am…

Spring 思维导图,让 Spring 不再难懂(cache篇)

转载自: java思维导图 开源中国关于缓存缓存是实际工作中非常常用的一种提高性能的方法。而在java中,所谓缓存,就是将程序或系统经常要调用的对象存在内存中,再次调用时可以快速从内存中获取对象,不必再去创建新的重…

动手学习_动手选择值

动手学习由于冠状病毒的存在,可选的东西在空中,一切都变得可选,例如可选的公共聚会,可选的在家工作,可选的旅行等。 我现在是时候谈论处理NULL引用的软件工程中真正的“ 可选 ”了。 托尼霍尔(Tony Hoare…

JVM菜鸟进阶高手之路

本文转载自公众号 匠心零度问题现象 代码如下,使用 ParNew Serial Old 回收器组合与使用 ParNew CMS 回收器组合时,结果为什么差异如此之大 ?private static final int _1MB 1024 * 1024;public static void main(String[] args) throws …

事务的状态(状态模式)

【0】README0.1)本文部分文字描述转自 “head first设计模式”,旨在学习 事务的状态(状态模式) 的基础知识;【1】应用场景一1.1)还记得成都市各大高校内的米源自动售卖机吗?售卖机的主要制造商…

ogm neo4j_Neo4J OGM与Quarkus

ogm neo4j在下面的视频中,我演示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例。 看一下GitHub上的示例项目 。 我为咖啡豆创建了一个示例域,其中包含我们可以查询和匹配的某些风味配置文件。 红色节点是来自某个国家/地区的咖啡豆&#xff…

什么是ThreadLocal

本文转载自 占小狼的博客前言在面试环节中,考察"ThreadLocal"也是面试官的家常便饭,所以对它理解透彻,是非常有必要的. 有些面试官会开门见山的提问: “知道ThreadLocal吗?”“讲讲你对ThreadLocal的理解”…

Java bytecode instruction listings

【0】README 0.1)these contents are shiped from https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings Mnemonic Opcode (in hexadecimal) Opcode (in binary) Other bytes Stack [before]→[after] Description(no name)cb-fd these values ar…

为wmi执行例外_称之为例外?

为wmi执行例外虽然这是一个有关测试和Wiremock的Java示例,但它涉及一个更普遍的问题。 我们正在尝试重试Wiremock的verify方法,该方法可能会在我们要检查的端点被命中之前由测试调用。 在这种情况下,我们希望在几秒钟后循环尝试一次&#xf…

漫画:什么是MapReduce

转载自 脑洞有点大的 程序员小灰什么是MapReduce?MapReduce是一种编程模型,其理论来自Google公司发表的三篇论文(MapReduce,BigTable,GFS)之一,主要应用于海量数据的并行计算。MapReduce可以分…

orelse_可选的orElse vs orElseGet

orelseJava 8引入了一个很棒的Optional概念,我们在博客Java 8 Optional中进行了研究 。 因此,为了简要说明一下,Optional用于表示Optional对象或空值,而不是null引用。 这将有助于避免在我们尝试对空引用对象执行某些操作时发生空…

jvm(6)-java类文件结构(字节码文件)

【0】README0.1)本文部分文字描述转自 “深入理解jvm”,旨在学习类文件结构 的基础知识;0.2)本文荔枝以及荔枝的分析均为原创;0.3)下面的截图中有附注t*编号,不关乎博文内容;0.4&am…

你可能不知道的 10 条 SQL 技巧

转载自 58沈剑 开源中国 一、一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!0 and stauts!1 not in/not exists都不是好习惯 可以优化为in查询: select * from order where status in(2,3) &#x…

夜神模拟器模拟安卓测试_使用模拟进行测试

夜神模拟器模拟安卓测试如果使用正确的方法,模拟对象将非常有用。 我在需要驱动软件开发使用的帖子中分享了一些使用Mock Objects的经验。 在这篇文章中,我分享了两件事 –使用模拟进行基于合同的测试。 –用于组织模拟代码的模式。 基于合同的测试 …

java记录类型_Java中的记录类型

java记录类型于2020年3月发布的JDK 14引入了记录 (预览语言功能),该记录提供了一种紧凑的语法来声明主要用于保存数据的类。 在记录中 ,所有低级,重复且容易出错的代码都类似于构造函数,访问器和通用方法&a…

代理模式(多线程实现状态监控)

【-1】README-1.1)本文部分文字描述转自“head first 设计模式”,旨在学习 远程代理对象 的基础知识;-1.2)多线程实现糖果自动售卖机监控程序为原创;-1.3)博文最后,转载了代理模式的定义&#…

一篇文章搞定面试中的二叉树

转载自 IOExceptioner 算法与数据结构 在上一篇介绍二叉树( Android面试题算法之二叉树 、红黑树详细分析,看了都说好),没看的读者建议先去了解了解,接下来再给大家带来一篇关于二叉树的文章。 最近总结了一些数据结…

清洁代码_清洁单元测试

清洁代码编写使用JUnit和某些模拟库的“单元测试”测试很容易。 即使测试甚至不是单元测试并提供可疑的价值,它们也可能产生使某些涉众满意的代码覆盖范围。 编写单元测试(在理论上是单元测试,但是比基础代码更复杂)因此也很容易编…

jvm(6)-Class字节码文件结构总结

【0】README 0.1)本文总结于 Clas字节码文件,旨在理清 Class字节码文件的大体结构; 【1】干货开始 对上图的分析(Analysis):A1)offset0 A1.1)头四个字节为CAFEBABE:表示…