def find_odds(numbers):
if not numbers:
return []
if numbers[0] % 2 == 1:
return [numbers[0]] + find_odds(numbers[1:])
return find_odds(numbers[1:])
Run Code Online (Sandbox Code Playgroud)
无需额外的变量或参数.
def only_odd(L):
return L[0:L[0]&1]+only_odd(L[1:]) if L else L
Run Code Online (Sandbox Code Playgroud)
这个版本更快,因为它避免了复制L
def only_odd_no_copy(L, i=0):
return L[i:i+(L[i]&1)]+only_odd_no_copy(L, i+1) if i<len(L) else []
Run Code Online (Sandbox Code Playgroud)
这个只使用O(log n)堆栈空间
def only_odd_logn(L):
x=len(L)/2+1
return L[:L[0]&1] + only_odd2(L[1:x]) + only_odd_logn(L[x:]) if L else L
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18587 次 |
| 最近记录: |