#1,用递归实现计算函数的阶乘
def myfac(n):
#用循环实现
s= 1
for i in range(1,n+1):
s*=i
print(s)
myfac(5)
def myfac(n):
#用循环实现
if n==1:
return 1
return n*myfac(n-1)
print(myfac(5))
#2,用递归实现求和:
def mysum(n):
#返回1+2+3+4+5+n的和
print(mysum(100))#5050
def mysum(n):
if n==1:
return 1
return n+mysum(n-1)
print(mysum(100))
3.已知有列表
L=[[3,5,8],10,[[13,14,],15,18],20]
写一个函数print_list(lst)打印出所有的数字
写一个函数 sum_list(lst)返回列表中所有数字
的和
注:
type(x)函数可以返回一个对象的类型
>>>type(20) is int #True
type([3,5,8]) is list #True
def print_list(lst):
# l=[]
for x in lst:
if type(x) is int:
# print_list(x)
print(x)
else:
print_list(x)
# print(x)
def sum_list(lst):
sum=0
for x in lst:
if type(x) is list:
sum+=sum_list(x)
else:
sum+=x
return sum
L=[[3,5,8],10,[[13,14,],15,18],20]
print_list(L)
print(sum_list(L))
4,用递归的方法实现快速排序
def QuickSort(myList,start,end):
if start < end:
i,j = start,end
#设置基准数
base = myList[i]
while i < j:
#如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
while (i < j) and (myList[j] >= base):
j = j - 1
#如找到,则把第j个元素赋值给第个元素i,此时表中i,j个元素相等
myList[i] = myList[j]
#同样的方式比较前半区
while (i < j) and (myList[i] <= base):
i = i + 1
myList[j] = myList[i]
#做完第一轮比较之后,列表被分成了两个半区,并且i=j,需要将这个数设置回base
myList[i] = base
#递归前后半区
QuickSort(myList, start, i - 1)
QuickSort(myList, j + 1, end)
return myList
myList = [49,38,65,97,76,13,27,49]
print("Quick Sort: ")
QuickSort(myList,0,len(myList)-1)
print(myList)