写一个递归函数
现在看看是否可以使用多个递归函数调用重写
你可以修改当前两个解决方案中的一个,以获得多个递归调用函数。
这个问题需要将列表分为两半同时运行,而不是让一个一直运行到结束。
例如,最好在修改后的代码版本中包含它们。
longest_word(my_list)
,它接受一个单词列表(每个单词都是字符串形式),并返回该列表中最长的单词,每次函数调用最多使用一个递归函数调用。如果列表为空,则函数应返回None。现在看看是否可以使用多个递归函数调用重写
longest_word(my_list)
函数。对于正确的返回输出,多个递归函数必须被调用正确的次数,这意味着其运行逻辑需要相应地针对多个递归调用而不是单个递归调用,即使它们的输出结果本质上相同。# First sample solution for single recursive calls
def longest_word(my_list):
if not my_list:
return None
elif len(my_list) == 1:
return my_list[0]
else:
l_word = longest_word(my_list[1:])
if len(my_list[0]) > len(l_word):
return my_list[0]
else:
return l_word
# Second sample solution for single recursive calls
def longest_word(my_list):
l_word = _longest_word(my_list,'')
if l_word == '':
return None
return l_word
def _longest_word(my_list, l_word):
if not my_list:
return l_word
elif len(my_list[0]) > len(l_word):
return _longest_word(my_list[1:], my_list[0])
else:
return _longest_word(my_list[1:], l_word)
你可以修改当前两个解决方案中的一个,以获得多个递归调用函数。
这个问题需要将列表分为两半同时运行,而不是让一个一直运行到结束。
例如,最好在修改后的代码版本中包含它们。
midpoint = len(my_list)//2
longest_word(my_list[midpoint:])
longest_word(my_list[:midpoint])
max([len(word) for word in my_list])
有问题吗?这段代码似乎过于复杂,去解决一个简单的任务。 - ggorlen