这是php代码使用函数参数来检查字符串是回文还是没有..帮我一步一步告诉我..过程正在发生...我无法理解
function Palindrome($string) {
if ((strlen($string) == 1) || (strlen($string) == 0)) {
echo " STRING IS PALINDROME";
}
else {
if (substr($string,0,1) == substr($string,(strlen($string) - 1),1)) {
return Palindrome(substr($string,1,strlen($string) -2));
}
else { echo " STRING IS NOT A PALINDROME"; }
}
}
Palindrome("121");
答案 0 :(得分:3)
此函数将字符串参数作为输入
它首先做的是检查递归基本情况。我们将回到那个
如果不满足基本情况,则使用此代码检查第一个字符是否与最后一个字符匹配:
if (substr($string,0,1) == substr($string,(strlen($string) - 1),1))
如果匹配,那么函数会再次自动调用自身,但这次删除了第一个和最后一个字符,这是用这一行完成的
return Palindrome(substr($string,1,strlen($string) -2));
如果第一个字符与最后一个字符不匹配,该函数会自动输出到html“STRING不是通过echo
现在回到我前面提到的基本情况,如果函数成功匹配并删除了第一个和最后一个字符,直到剩下一个或没有字符,那么该字符串已被确认为回文并且它回显该字符串。
如果您需要递归帮助,请告诉我,我会发布一个教程链接
答案 1 :(得分:1)
正在使用递归。
该程序以这种方式工作。如果这个单词没有字母或有一个字母,则它是一个回文。 '一个'是一个回文,所以''
因此,您的程序将检查第一个字母是否与给定单词中的最后一个字母匹配。 如果不是它不是回文 如果是,它将删除最后一个字母,第一个字母和最后一个字母并再次检查
所以当你说121 1.它将检查1和1,哪个匹配。所以它将用2调用相同的函数 2.然后它将删除1和1 它会检查2 由于2是一个字符,它是一个回文
如果你要求abba
如果你要求phpcodephp
答案 2 :(得分:1)
使用递归函数检查字符串是否为回文。首先是通过strlen()函数检查字符串的长度是1还是0。如果是,则直接返回“是”,否则它将检查第一个字母,即带有最后一个字母的substr($ string,0,1),即substr($ string,(strlen($ string) - 1),1)。如果为真,则它将递归检查子字符串,排除第一个字母和最后一个字母,即Palindrome(substr($ string,1,strlen($ string)-2));.
答案 3 :(得分:0)
使用
function Palindrome($string) {
return strrev($string) === $string;
}
var_dump(Palindrome("121"));
你的函数检查长度,如果它的0或1必须是回文。
然后将第一个字母与最后一个字母进行比较。它们是相同的,然后再重复一次。
所以121的电话
121不等于0或1个字符长,
先检查等于最后一次。 1 = 1
删除1并留下2
以2为参数重启。
2等于0或1个字符长,
return String是Palindrome。
我发布的功能是一种更容易检查的方法
答案 4 :(得分:0)
此算法检查字符串的第一个和最后一个字母是否相等。如果是这种情况,算法将裁剪字符串的第一个和最后一个字母,并以递归方式调用自身。这个,直到字符串为空(或只剩下一个字母) 例如字符串“blaalb” 使用Palindrome(“blaalb”)调用该算法。 如您所见,第一个和最后一个字母是相同的(“b”),因此这些字母被裁剪。 (如果没有,字符串将不是回文并且“STRING不是PALINDROME”将被返回)算法现在用Palindrome(“laal”)调用自己。再次,“l”被裁剪,然后“a” 不是字符串是空的并且“STRING是PALINDROME”被返回。 请记住,例如“blaxalb”也是回文,因此算法会检查字符串长度(strlen)是1还是0以确定它已完成