我正在尝试编写一个函数来检查字符串中的字符是否使用递归进行排序。这就是我想出的:
def is_sorted(x,i):
if i >= len(x):
return True
elif x[i] <= x[i-1]:
return False
else:
is_sorted(x,i+1)
我用这些来测试我的功能:
x = "abcadef"
y = "aabcdef"
z = "abcdef"
print is_sorted(x, 1)
print is_sorted(y, 1)
print is_sorted(z, 1)
我希望得到False,False,True,但我得到None,False,None。为什么? :(
答案 0 :(得分:6)
您没有在最后一个else
子句中返回任何内容。因此结果。
def is_sorted(x,i):
if i >= len(x):
return True
elif x[i] <= x[i-1]:
return False
else:
return is_sorted(x,i+1)
演示:
>>> def is_sorted(x,i):
... if i >= len(x):
... return True
... elif x[i] <= x[i-1]:
... return False
... else:
... return is_sorted(x,i+1)
...
>>> x = "abcadef"
>>> y = "aabcdef"
>>> z = "abcdef"
>>> print is_sorted(x, 1)
False
>>> print is_sorted(y, 1)
False
>>> print is_sorted(z, 1)
True
>>>
答案 1 :(得分:2)
您需要返回函数以将其传递给递归链
def is_sorted(x,i):
if i >= len(x):
return True
elif x[i] <= x[i-1]:
return False
else:
return is_sorted(x,i+1) # <---- Here