【发布时间】:2014-05-16 05:57:55
【问题描述】:
这段代码只是通过分治算法找到最大的数字。代码本身可以完美运行并找到大数并存储在 my_data[0] 中。它正确打印最大的数字。但是当我尝试返回它并存储在“val”变量中时,“无”被存储而不是最大的数字。为什么 return 语句只返回 'none' 而不是 my_data[0].. ??由于返回值不正确,我无法继续执行代码。谁能说这是什么毛病?提前谢谢..
def largest(my_data):
if len(my_data) == 1:
print my_data[0]
return my_data[0]
else:
alist = []
blist = []
for i in range(0,len(my_data),2):
if my_data[i] > my_data[i+1]:
alist.append(my_data[i])
blist.append(my_data[i+1])
else:
alist.append(my_data[i+1])
blist.append(my_data[i])
my_data = list(alist)
largest(my_data)
my_data = [12,45,63,13,76,87,23,85,56,123,7856,132,786,124,756,25366468]
val = largest(my_data)
print val
【问题讨论】:
-
这并不是真正的分治算法。分而治之将一个问题拆分为多个子问题;例如,对于这个问题,分而治之会将列表一分为二,找到每一半的最大值,然后返回更大的子最大值。
-
你为什么要经历这一切呢?即使您不能只使用
max(my_data),也可以更简单地遍历列表,跟踪您迄今为止看到的最大元素。