擅长:python、mysql、java
<p>为了有意义地使用,您可以将列表一分为二,并递归列表的左子集和右子集,以确定两个最长的字符串,然后比较这两个字符串以获得最终结果:</p>
<pre><code>def recursiveLongestString(lst,start=0,end=None):
if end is None: end = len(lst)-1 # initial range is whole list
if start==end: return lst[start] # base condition, stops recursion
mid = (start+end)//2 # split index
maxLeft = recursiveLongestString(lst,start,mid) # longest on the left
maxRight = recursiveLongestString(lst,mid+1,end) # longest on the rigth
return maxLeft if len(maxLeft)>len(maxRight) else maxRight
recursiveLongestString(["hi", "its", "fantastic", "here"])
'fantastic'
</code></pre>
<p><em>这样做的好处是,当您的列表有近1000个项目时,不会达到递归深度限制。此外,它不会创建列表内容的任何副本</em></p>
<p>通过使用默认参数沿递归调用向下传输最长字符串,可以使还原方法更加紧凑:</p>
<pre><code>def recursiveLongestString(L,S=""):
return recursiveLongestString(L[1:],(L[0],S)[len(S)>len(L[0])]) if L else S
</code></pre>