gpt4 book ai didi

java - 作业-迭代到递归方法

转载 作者:行者123 更新时间:2023-12-01 23:54:32 27 4
gpt4 key购买 nike

我的老师要求我们创建两种方法来确定字符串是否为回文。一个必须是递归方法,另一个必须是迭代方法,我已经找到了迭代版本,但我不知道如何使其成为递归方法。欢迎任何和所有的帮助。谢谢您

static boolean isPalindrome(String s)
{
String noSpaces = s.replaceAll("\\W", ""); //remove all non-word chars from string
String revString = ""; //store reversed string

//for loop working from outter chars to inner
//to reverse the string

for(int i = 1; i <= noSpaces.length(); i++)
{
//if true add char to revString String
if(noSpaces.charAt(i - 1) == noSpaces.charAt(noSpaces.length() - i))
revString = revString + noSpaces.charAt(i - 1);
}

//return true if original string matches reversed string
if(noSpaces.equals(revString))
return true;
else
return false;

}

最佳答案

递归通过调用自身的方法来工作。递归的一个著名例子是阶乘:n! = n * (n-1)!。递归之所以有效,是因为输入每次都会改变;如果不这样做,它基本上会成为一个无限循环,占用内存并最终使程序崩溃。关于递归的最后一件事:有一些点答案是已知的,就像阶乘,0! = 1 。递归方法需要给出这个已知值的答案,否则它将继续下去,直到崩溃或抛出错误(因为询问了不可能的事情)。在您的示例中,如果某个东西有一个或两个完全相同的字符,您就知道它是否是回文。

递归:您想要的方法是获取一个字符串,执行replaceAll以删除非单词字符,(向其中添加.toLowerCase()),然后检查第一个和最后一个字符,看看它们是否相同。如果是,则再次运行该方法,输入为 noSpaces 并删除第一个和最后一个字符。但是,如果字符串的长度 <= 3 并且第一个和最后一个字符相同,那么您可以继续并返回 true。如果您不添加它,当您尝试删除不存在的字符时,您将收到错误消息(不过还有另一种方法可以做到这一点)。

你的迭代方法很大,你可以缩小它。您不需要检查所有字符,只需检查其中的一半(如果长度为奇数,则为 1/2 + 1)。您也不需要复制该字符串,而是在同一个字符串上使用两个 charAt 方法。

编辑:我确实删除了我的代码,因为这是家庭作业。如果您确实需要查看它,请查看编辑历史记录

关于java - 作业-迭代到递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799627/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com