我目前正在 edx 上编程课程,我的指令如下:使用二分搜索的思想,编写一个递归算法,检查一个字符是否包含在字符串中,只要字符串是按字母顺序排列的。我的代码(python 2.7)在这里:
def isitIn(char, aStr):
m = aStr[len(aStr) // 2]
if aStr == '' or len(aStr) == 1 or char == m:
return False
else:
if char < m:
return isitIn(char, aStr[:-1])
elif char > m:
return isitIn(char, aStr[1:])
return isitIn(char, aStr)
我的解释:我首先从找到字符串的中间字符开始。如果它等于字符,则返回 False。如果不等于字符,则继续检查字符是否低于中间字符,然后使用递归函数创建堆栈并最终返回布尔值 True。现在我使用了 -1 和 1 索引,因为我不想包含中间字符。
我宁愿得到提示,而不是解决方案,因为我仍在试图弄清楚,但不同的观点永远不会受到伤害。谢谢!
Error message:
Test: isIn('a', '')
Your output:
Traceback (most recent call last):
File "submission.py", line 10, in isIn
m = aStr[len(aStr) // 2]
IndexError: string index out of range
Correct output:
False