小甲鱼的铁粉 发表于 2020-6-17 09:01:52

python3:使用递归判断回连文

这个是答案,但是里有一行代码不理解,这一行代码太长了吧
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)




return is_palindrome(n, start+1, end-1) if n == n else 0
这个代码具体是怎么执行的呢{:10_297:}

小甲鱼的铁粉 发表于 2020-6-17 09:03:25

{:10_257:}

小甲鱼的铁粉 发表于 2020-6-17 09:04:35

if n == n成立的话返回1,不成立的话直接返回零推出所有函数吗?

Twilight6 发表于 2020-6-17 09:04:38

小甲鱼的铁粉 发表于 2020-6-17 09:03


这个是三元运算符 操作

Twilight6 发表于 2020-6-17 09:05:32

小甲鱼的铁粉 发表于 2020-6-17 09:04
if n == n成立的话返回1,不成立的话直接返回零推出所有函数吗?


如果n == n 条件满足 就执行 if 前面的语句,也就是进入下一次的递归

而如果不满足 则返回 0


小甲鱼的铁粉 发表于 2020-6-17 09:05:58

Twilight6 发表于 2020-6-17 09:05
如果n == n 条件满足 就执行 if 前面的语句

如果不满足 则返回 0

{:10_275:}

heidern0612 发表于 2020-6-17 09:08:03

is_palindrome(n, start+1, end-1) if n == n else 0

is_palindrome(n, start+1, end-1) 这部分是个函数,n表示字符串,start和end表示的是下标。

整体这一句是个三元表达式,意思等同于:if n == n :
    is_palindrome(n, start+1, end-1)
else:
    0


也就是说:

如果字符串的开头和结束一致,那就判断第二个字符和倒数第二个字符是否相等,然后往下依次递归。

小甲鱼的铁粉 发表于 2020-6-17 09:14:09

heidern0612 发表于 2020-6-17 09:08
is_palindrome(n, start+1, end-1) if n == n else 0

is_palindrome(n, start+1, end-1) 这 ...

哇(⊙o⊙)!,清楚{:10_275:}
页: [1]
查看完整版本: python3:使用递归判断回连文