遞歸求列表最大數(shù)
def max(list):
if len(list)==2:
return list[0] if list[0]>list[1] else list[1]
sub_max = max(list[1:])
return list[0] if list[0]>sub_max else sub_max
my_list =[1,9,5,3,7]
print max(my_list)
本來一直都想不懂9為什么能是sub_max值,它應該是list[0]才對啊虫啥,它又不是兩個數(shù)比較出來的蔚约,“血統(tǒng)不純正”⊥孔眩苦思冥想+n多Debug也無法真正完全說服自己苹祟,最后直接開了個word文檔手寫過程,感覺能說服自己了很多评雌。
my_list =[1,9,5,3,7]
第一次:len(list)不等于2苔咪,進入第四行sub_max = max(list[1:]),調(diào)用一次函數(shù)本身柳骄,1被趕出來成為一個獨立數(shù),新的list是[9,5,3,7]
第二次:len是4箕般,進入第四行sub_max = max(list[1:])耐薯,調(diào)用一次函數(shù)本身,9被趕出來成為一個獨立數(shù)丝里,新的list是[5,3,7]
第三次:len是3曲初,進入第四行sub_max = max(list[1:]),調(diào)用一次函數(shù)本身杯聚,5被趕出來成為一個獨立數(shù)臼婆,新的list是[3,7]
第四次:len是2,進入第三行進行比較得7幌绍,sub_max =7
————————————————————————————————————
返回第三次:sub_max =7是第四次的結果颁褂。此時list [0]=5,這一次調(diào)用返回的數(shù)字還是9傀广,因為第五行進行了list[0]和sub_max之間的比較颁独。
返回第二次:第三次返回的結果是7也就是說,7是第二次中調(diào)用的max函數(shù)得到的值伪冰。接著第五行進行l(wèi)ist [0]=9與sub_max =7的比較誓酒,返回9。
返回第一次:第二次返回的結果是9也就是說贮聂,9是第一次中調(diào)用的max函數(shù)所得到的值靠柑。接著第五行進行l(wèi)ist [0]=1與sub_max =9的比較寨辩,返回9。