java - charAt如何在这个方法中反转输入?

标签 java methods

//method
public static String foo(String s)

{
if (s.length() == 1)

return s;

else

return foo(s.substring(1)) + s.charAt(0);
}

foo(“abcd”) 的计算结果是什么? 据我了解,这会反转输入,但这是为什么呢?

最佳答案

这是一个recursive撤销。 s.substring(1) 是没有第一个字符的行; s.charAt(0) 是第一个字符。

函数说的是“如果行是一个字符长,答案就是行本身;否则,砍掉第一个字符,计算相同的函数,并将砍掉的字符添加到结果的末尾".

您可以在一张纸上算出执行上述步骤如何相当于反转字符串。

编辑: 值得注意的是,如果您尝试向它传递一个空字符串,此实现将因异常而崩溃。将 if (s.length() == 1) 更改为 if (s.length() == 0) 将解决此问题(感谢 Tom Hawtin - tackline for在评论中提到这一点)。

关于java - charAt如何在这个方法中反转输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398592/

相关文章:

java - 如何标记重复的元素?

java - Android项目无法引用eclipse中的其他项目

java - AbstractRoutingDataSource + JPA 不会创建除 defaultTargetDataSource 之外的表

syntax - 为什么 Go 方法接收类型不能是接口(interface)?

javascript - Vue.js 在 v-for 中使用方法

java - <<String>,List<String>> 类型的 java Map 中的方法 put()

c++ - 强制使用通用方法名称

java - 编译时的方法选择。如果参数可以有多种类型怎么办?

java - Java方法定义问题

javascript - 将简单数组传递给 Java Spring