温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用Java递归

发布时间:2021-11-19 16:12:07 来源:亿速云 阅读:224 作者:iii 栏目:移动开发

这篇文章主要介绍“怎么使用Java递归”,在日常操作中,相信很多人在怎么使用Java递归问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Java递归”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

publicinterfaceReverser { publicString reverse(String str);

在Java中,***的实现就是用JDK中StringBuffer的反转方法,它不仅速度快,效率高,而且还知道如何处理unicode代理对(surrogate pairs)。其它方案基本上都可以忽略掉。

publicclassJdkReverser implementsReverser {  publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } returnnewStringBuffer(str).reverse().toString();

不仅选择把趣味性地实现当做一种答案,而且候选者有没有重用JDK,或者告诉你“JDK中有那么些东西是可以去实现的”,哪一种好呢,google一下可以帮你找到JDK的解决方案,你总不希望开发者实现一切。

处理问题:

问他代码中什么地方有bug,即使没有。或者代码怎么会报错,他的答案至少可以引出一个讨论关于如何处理空值的话题来。

 返回null
 返回“”
 抛出NullPointerException
 抛出IllegalArgumentException

第二个讨论的焦点是是如何去优化解决方法,像返回字符串本省“”,长度为1的字符串(本省就是反转)

递归(Recursion):

之后要求应聘者在反转的问题上写一个递归的方案(这至少是漂亮的,但至少可用)

publicString reverse(String str) { if((null== str) || (str.length()  <= 1)) { returnstr; } returnreverse(str.substring(1)) + str.charAt(0);

有些开发人员在脑海中想不到处理递归,或者需要时间和一些提示。那些不能处理递归的很有可能对于复杂的问题没法完成。

你可以问他们关于递归方案的效率,询问尾(Tail)递归,询问 “+”操作的效率,如何处理,关于为什么String都是不可变的(至少在大多时候这么问),反转“Stephan”时,问候选者有多少个字符串对象创建。在讨论中,开发者说“Easy”,他在整个大学都在用Lisp语言,之前我还不知道, 现在听起来真是个极好的消息。你还可以询问在上面代码结束递归的停止条件。

更多的方案:

在适当的位置调动StringBuffer:

publicString reverse(String str) { if((null== str) || (str.length()  <= 1)) { returnstr; } StringBuffer result = newStringBuffer(str); for(inti = 0; i < (str.length() / 2); i++) { intswapIndex = str.length() - 1- i; charswap = result.charAt(swapIndex); result.setCharAt(swapIndex, result.charAt(i)); result.setCharAt(i, swap); } returnresult.toString();

采用调用数组的方法:

publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } char[] chars = str.toCharArray(); intright = chars.length - 1; for(intleft = 0; left < right; left++) { charswap = chars[left]; chars[left] = chars[right]; chars[right--] = swap; } returnnewString(chars);

SringBuffer追加的方法:

publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } StringBuffer reverse = newStringBuffer(str.length()); for(inti = str.length() - 1; i >= 0; i--) { reverse.append(str.charAt(i)); } returnreverse.toString();

到此,关于“怎么使用Java递归”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI