函数
定义
函数是指⼀段可以直接被另⼀段程序或代码引⽤的程序或代码。也叫做⼦程序、⽅法。
⼀个较⼤的程序⼀般应分为若⼲个程序块,每⼀个模块⽤来实现⼀个特定的功能。所有的⾼级语⾔中都有⼦程序这个概念,⽤⼦程序实现模块的功能。在C语⾔中,⼦程序的作⽤是由⼀个主函数和若⼲个函数构成。由主函数调⽤其他函数,其他函数也可以互相调⽤。同⼀个函数可以被⼀个或多个函数调⽤任意
多次。
在程序设计中,常将⼀些常⽤的功能模块编写成函数,放在函数库中供公共选⽤。要善于利⽤函数,以减少重复编写程序段的⼯作量。
种类
函数分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷⻉构造函数、成员函数、友元函数、运算符重载函数、内联函数等。
递归
定义
递归的能⼒在于⽤有限的语句来定义对象的⽆限集合。⼀般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满⾜时,
递归前进;当边界条件满⾜时,递归返回。
三要素
1、明确递归终⽌条件;
2、给出递归终⽌时的处理办法;
3、提取重复的逻辑,缩⼩问题规模
递归实现数的阶乘:
def recursion(n):
if(n==0):
return 0
if(n==1):#递归终⽌条件
return 1 #终⽌时不再向下传递,⽽是进⾏合适的操作。
else:
return (n*recursion(n-1)) #⽐如阶乘的逻辑 n! = n*n-1*(n-1)-1*...
递归实现数的幂
def power(n, k):
if(k==0):
return 1
if(k==1):
return n
return n*power(n, k-1)
递归练习
a是⼀个数组, b也是⼀个数组,b中的数据是a中的数据逐项累加得到的。
尝试使⽤递归实现
a=[x1,x2,x3,x4,x5,x6]
y1=x1
y2=x1+x2
y3=x1+x2+x3
······
yn=x1+x2+·······+xn
b=[y1,y2,·······yn]
a = [1, 2, 3, 4, 5, 6, 7]
b = []
def fun(a, b):
if len(b) == 0:
b.append(a[0])
if len(b) < len(a):
b.append(0)
b[len(b) - 1] = b[len(b) - 2] + a[len(b) - 1]
return fun(a,b)
else:
print(b)
print(fun(a, b))
二分查找法
def serach(array, t):
array.sort() #排序,保证列表是有序的
low = 0
height = len(array) - 1
while low <= height:
k = (low + height) // 2
if array[k] < t:
low = k + 1
elif array[k] > t:
height = k - 1
else:
return k #找到后返回位置
return -1 #找不到返回-1
array = [1, 3, 5, 7, 9, 6, 8, 0]
print(serach(array, 5))