|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
还记得求回问字符串那道题吗?现在让你使用递归的方式来求解。
解题思路:有好多种方法,不过综合效率来说,下面的方法比较朴素:
利用递归每次索引前后2个字符进行对比,当start > end的时候,也正是首尾下标“碰面”的时候
即作为结束递归的条件。
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('请输入一串字符串:')
length = len(string)-1
if is_palindrome(string, 0, length):
print('\"%s\"是回文字符串!' % string)
else:
print('\"%s\"不是回文字符串!' % string)
问题:麻烦大神给个注释。
另外,第二部分的length语句和上部分是什么样的联系?
- #!/usr/bin/env python
- #-*-coding:utf-8-*-
- 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('请输入一串字符串:')
- length = len(string)-1#这里也可以写成end = len(string)-1就是最后一个字符的下标
- if is_palindrome(string, 0, length):#这个递归函数中的第一个参数是string就是你输入的字符串,第二个参数0就是第一个字符的下标
- #最后一个参数length就是最后一个字符的下标,然后递归函数进行判断,要是回文的话就返回1,要不是就是返回0
- #对应的if语句,值是1执行if,值是0,执行else
- print('"%s"是回文字符串!' % string)
- else:
- print('"%s"不是回文字符串!' % string)
复制代码
|
|