7、 #个数大于0输入元素
a=[] #开始列表为空
for i in range(0,n): #循环输入n个数
x=float(input("请输入第"+str(i+1)+"元素")) #输入
a.append(x) #添加到列表中
print("它们的最大值为:",Max(a,n)) #求最大值并显示
print("") #换行
测试结果:
请输入元素个数:3
请输入第1元素1
请输入第2元素23
请输入第3元素
8、3
它们的最大值为: 23.0
请输入元素个数:3
请输入第1元素3
请输入第2元素2
请输入第3元素1
它们的最大值为: 3.0
请输入元素个数:3
请输入第1元素3
请输入第2元素1
请输入第3元素2
它们的最大值为: 3.0
请输入元素个数:3
请输入第1元素2
请输入第2元素3
请输入第3元素1
它们的最大值为: 3.0
请输入元素个数:0
题目2 使用递归求数组元素的最小值
解法1 一般递归
#求最小值的函数,一般递归
def Min(A,n):
if n==1:
return A[0] #一个
9、元素时直接返回
else:
m=Min(A,n-1) #前面n-1个元素的最小
if m>A[n-1]: #和最后一个元素比较
return A[n-1] #返回最小的
else:
return m
#调用函数,求序列中的最小值
while(1): #循环
n=int(input("请输入元素个数:")) #输入元素个数
if n<1: #个数小于0结束
break
else: #个数大
10、于0输入元素
a=[] #开始列表为空
for i in range(0,n): #循环输入n个数
x=float(input("请输入第"+str(i+1)+"元素")) #输入
a.append(x) #添加到列表中
print("它们的最小值为:",Min(a,n)) #求最小值并显示
print("") #换行
解法2二分法递归
#二分法递归求最小值的函数
def Min(A,n):
if n==1:
11、
return A[0]
else:
mid=n//2 #中间元素的位置(下标)
leftA=A[:mid] #左边子序列
rightA=A[mid:] #右边子序列
leftMin=Min(leftA,mid) #递归求左边的最小
rightMin=Min(rightA,n-mid) #递归求右边的最小
if leftMin>rightMin: #比较左右子序列的最小值
return rightMin
12、 #返回较小的
else:
return leftMin
#调用函数,求序列中的最小值
while(1): #循环
n=int(input("请输入元素个数:")) #输入元素个数
if n<1: #个数小于0结束
break
else: #个数大于0输入元素
a=[] #开始列表为空
for i in range(0,n): #循环输入n个数
x=float(input("请输入第
13、"+str(i+1)+"元素")) #输入
a.append(x) #添加到列表中
print("它们的最小值为:",Min(a,n)) #求最小值并显示
print("") #换行
第3题 猴子吃桃问题
def monkeypeach(n): #函数
if n==10: #第10天的桃子数,是确定的
return 1 #第10天的桃子数是1,计算结果为1,返回1
else: #计算的不
14、是第10天
tmp=2*(monkeypeach(n+1)+1) #等于后一天的桃子数加1再乘2
return tmp #返回计算结果
print("本程序求解猴子吃桃问题")
n=int(input('请输入天数([1,10],超出范围程序结束):'))
while(n>0 and n<11):
num=monkeypeach(n) #调用函数得到计算结果
print('第',n,'天桃子的数量为:',num)
n=int(input('请输入天数:'))
print("程序结束")
测试结果