函数与递归+分治算法
1.函数简介
函数的定义:
函数是指⼀段可以直接被另⼀段程序或代码引⽤的程序或代码。也叫做⼦程
序、⽅法。
⼀个较⼤的程序⼀般应分为若⼲个程序块,每⼀个模块⽤来实现⼀个特定的功
能。所有的⾼级语⾔中都有⼦程序这个概念,⽤⼦程序实现模块的功能。在C
语⾔中,⼦程序的作⽤是由⼀个主函数和若⼲个函数构成。由主函数调⽤其他
函数,其他函数也可以互相调⽤。同⼀个函数可以被⼀个或多个函数调⽤任意
多次。
在程序设计中,常将⼀些常⽤的功能模块编写成函数,放在函数库中供公共选
⽤。要善于利⽤函数,以减少重复编写程序段的⼯作量。
函数分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、
拷⻉构造函数、成员函数、友元函数、运算符重载函数、内联函数等。
构造函数:
def 函数名(参数):
2.递归思想
递归
‘’’
递归的能⼒在于⽤有限的语句来定义对象的⽆限集合。⼀般来说,递
归需要有边界条件、递归前进段和递归返回段。当边界条件不满⾜时,
递归前进;当边界条件满⾜时,递归返回。
递归三要素:
1、明确递归终⽌条件;
2、给出递归终⽌时的处理办法;
3、提取重复的逻辑,缩⼩问题规模。
作业:
a = [1,5,3,8,0,0,7]
b=[]
def addfun(a, b):
if len(b) == 0:
b.append(a[0])
elif len(b) < len(a):
b.append(0)
b[len(b)-1] = a[len(b)-2] + a[len(b)-1]
return addfun(a,b)
else:
return b
二分查找:
def middle_search(find, L) :
low = 0
high = len(L)
while low < high :
mid = int((low + high) / 2)#一分为二
if L[mid] == find :
return mid
#左半边
elif L[mid] > find :
high = mid - 1
#右半边
else :
low = mid + 1
#未找到返回-1
return -1
3.分治算法
一.归并排序
二.快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。