Andrew103496137 发表于 2016-11-23 12:40:32

用递归解决回文联的程序怎么解释,看不懂。帮忙解答,谢谢!

def is_palindrome(n, start, end):
      if start > end:
                return 1   
      else:
                return is_palindrome(n, start+1, end-1) if n == n else 0
      
string = input('请输入一串字符串:')
length = len(string)-1

if is_palindrome(string, 0, length):
      print('\"%s\"是回文字符串!' % string)
else:
      print('\"%s\"不是回文字符串!' % string)

小茗同学 发表于 2016-11-23 13:52:34

def is_palindrome(n, start, end):   #定义回文贴的方法,有三个入参(字符串的长度,字符串左边字符的索引,字符串右边字符的索引)                                                   
      if start > end:               #如果字符左边字符索引>右边字符索引(说明一半的字符已经比较过了)
                return 1            #返回1
      else:                         #如果左边索引值<右边索引值说明还没有对比完,如果第一个字符和最后一个字符相等则使用递归函数比较第二个字符和倒数第二个字符,否则返回0
                return is_palindrome(n, start+1, end-1) if n == n else 0
      
string = input('请输入一串字符串:')#输入一个字符串
length = len(string)-1                #确定字符串的长度(是为了确定end值)

if is_palindrome(string, 0, length):#如果返回的是1,说明是回文贴
      print('\"%s\"是回文字符串!' % string)
else:                                  #返回0说明不是回文贴
      print('\"%s\"不是回文字符串!' % string)

Andrew103496137 发表于 2016-11-23 15:34:40

小茗同学 发表于 2016-11-23 13:52


你解释的非常清楚,谢谢!

SSSpython 发表于 2016-11-28 10:01:14

2楼棒棒的,过来学习{:10_256:}

Damn_it 发表于 2016-11-29 20:59:41

{:10_254:}

解语花 发表于 2017-5-29 02:35:38

二楼解释的很棒,我补充一下。
‘’return is_palindrome(n, start+1, end-1) if n == n else 0‘’
上面的是三元操作符,语法:x if 条件 else y,表示else后if条件成立x为true,否则y为true。

流光樱桃 发表于 2019-12-5 21:16:19

第1行注释n应该不是指的字符串长度把,而是单纯指的这个字符串本身吧?

kkon 发表于 2020-7-14 10:21:34

一下没看出来是这个3元操作符,解释的很棒,赞一个!
页: [1]
查看完整版本: 用递归解决回文联的程序怎么解释,看不懂。帮忙解答,谢谢!