我目前正在Python类中从事递归工作,遇到了这个问题。这两个函数通过检查字符串a是否为字符串b的子字符串一起工作。如果字符串a是字符串b的子字符串,则程序应返回True。如果不是,则返回False。但是,当我尝试执行程序时,返回的唯一值是“无”。我对做什么感到困惑。谢谢!
def is_subsequence(string_a, string_b):
pos_a = 0
pos_b = 0
contains_string(string_a, string_b, pos_a, pos_b)
def contains_string(string_a, string_b, pos_a, pos_b):
if(pos_a == len(string_a) - 1):
return True
if(pos_b == len(string_b) - 1):
return False
if(string_a[pos_a] != string_b[pos_b]):
pos_b = pos_b + 1
return contains_string(string_a, string_b, pos_a, pos_b)
if(string_a[pos_a] == string_b[pos_b]):
pos_a = pos_a + 1
pos_b = pos_b + 1
return contains_string(string_a, string_b, pos_a, pos_b)
else:
return False
答案 0 :(得分:1)
没有显式,您的函数is_subsequence
将返回None
。这是所有函数的默认Python属性。将功能更改为:
def is_subsequence(string_a, string_b):
pos_a = 0
pos_b = 0
return contains_string(string_a, string_b, pos_a, pos_b)
答案 1 :(得分:0)
您的contains_string
返回的是True或False,但是调用contains_string
的主函数只是调用该函数,但不返回任何内容。因此,结果是无。
Python函数具有默认的返回值,如果没有给出返回表达式,或者仅给出了单独的return,则为None
。
只需将语句更改为return contains_string(string_a, string_b, pos_a, pos_b)
,它将正常工作。您最后的主要功能应该是-
def is_subsequence(string_a, string_b):
pos_a = 0
pos_b = 0
return contains_string(string_a, string_b, pos_a, pos_b)
答案 2 :(得分:0)
您的主函数(is_subsequence)没有返回任何值,因此您在执行程序时得到None。它需要返回从contains_string方法获得的值。 您的is_subsequence方法应类似于:
def is_subsequence(string_a, string_b):
pos_a = 0
pos_b = 0
return contains_string(string_a, string_b, pos_a, pos_b)