|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def is_palindrome(n,start,end):
if start > end:
return 1
else:
return is_palindrome(n,start+1,end-1) if n[start] == n[end] else 0
string = input("请输入一串字符串:") #这里我输入:addddda
length = len(string)-1
if is_palindrome(string,0,length): #这里面的实参是什么意思?跟形参start end之间是什么关系?
print('"%s"是回文字符串!' % string)
else:
print('"%s"不是回文字符串!' % string)
return is_palindrome(n,start+1,end-1) if n[start] == n[end] else 0 这句该怎样理解,当n[start] == n[end]不成立时,,下面的步骤应该是怎样的,最好一步一步写,,求解::多谢多谢!!
本帖最后由 Twilight6 于 2020-11-21 12:03 编辑
看下下面这些递归大致步骤,你前面太长了,但是大体上就这里后续的样算都是这样:
假设你输入是 ada , 此时 length 就为 2 ,然后调用函数 is_palindrome(string,0,length) 则:
is_palindrome('ada',0,2) --> if start(0) > end(2) --> False --> else --> return is_palindrome('ada',0+1,2-1) if n[0] == n[2] else 0 --> return is_palindrome('ada',0+1,2-1)
第一次进入递归:
is_palindrome('ada',1,1) --> if start(1) > end(1) --> False --> else --> return is_palindrome('ada',1+1,1-1) if n[1] == n[1] else 0 --> return is_palindrome('ada',2,0)
第二次进入递归:
is_palindrome('ada',2,0) --> if start(2) > end(0) --> True --> return 1
最终返回 1 ,这里 return 用了三元运算符,即 <结果> if <条件> else <结果> , if 条件成立,则执行 if 前面的结果,反之执行 else 后面的结果
|
|