您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 最大最小猴子吃桃的Python程序
求最大值、最小值,解猴子吃桃问题的Python程序ylzhao2013.12.51.求数组元素的最大值解法1非递归法#求最大值的函数,非递归defMax(A,n):maxdata=A[0]foriinrange(1,n):ifA[i]maxdata:maxdata=A[i]returnmaxdata#调用函数,求序列中的最大值while(1):#循环n=int(input(请输入元素个数:))#输入元素个数ifn1:#个数小于0结束breakelse:#个数大于0输入元素a=[]#开始列表为空foriinrange(0,n):#循环输入n个数x=float(input(请输入第+str(i+1)+元素))#输入a.append(x)#添加到列表中print(它们的最大值为:,Max(a,n))#求最大值并显示print()#换行解法2一般递归法#求最大值的函数,一般递归defMax(A,n):ifn==1:returnA[0]#一个元素时直接返回else:m=Max(A,n-1)#前面n-1个元素的最大ifmA[n-1]:#和最后一个元素比较returnA[n-1]#返回最大的else:returnm#调用函数,求序列中的最大值while(1):#循环n=int(input(请输入元素个数:))#输入元素个数ifn1:#个数小于0结束breakelse:#个数大于0输入元素a=[]#开始列表为空foriinrange(0,n):#循环输入n个数x=float(input(请输入第+str(i+1)+元素))#输入a.append(x)#添加到列表中print(它们的最大值为:,Max(a,n))#求最大值并显示print()#换行解法3二分法递归#二分法递归求最大值的函数defMax(A,n):ifn==1:returnA[0]else:mid=n//2#中间元素的位置(下标)leftA=A[:mid]#左边子序列rightA=A[mid:]#右边子序列leftMax=Max(leftA,mid)#递归求左边的最大rightMax=Max(rightA,n-mid)#递归求右边的最大ifleftMaxrightMax:#比较左右子序列的最大值returnrightMax#返回较大的else:returnleftMax#调用函数,求序列中的最大值while(1):#循环n=int(input(请输入元素个数:))#输入元素个数ifn1:#个数小于0结束breakelse:#个数大于0输入元素a=[]#开始列表为空foriinrange(0,n):#循环输入n个数x=float(input(请输入第+str(i+1)+元素))#输入a.append(x)#添加到列表中print(它们的最大值为:,Max(a,n))#求最大值并显示print()#换行测试结果:请输入元素个数:3请输入第1元素1请输入第2元素23请输入第3元素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一般递归#求最小值的函数,一般递归defMin(A,n):ifn==1:returnA[0]#一个元素时直接返回else:m=Min(A,n-1)#前面n-1个元素的最小ifmA[n-1]:#和最后一个元素比较returnA[n-1]#返回最小的else:returnm#调用函数,求序列中的最小值while(1):#循环n=int(input(请输入元素个数:))#输入元素个数ifn1:#个数小于0结束breakelse:#个数大于0输入元素a=[]#开始列表为空foriinrange(0,n):#循环输入n个数x=float(input(请输入第+str(i+1)+元素))#输入a.append(x)#添加到列表中print(它们的最小值为:,Min(a,n))#求最小值并显示print()#换行解法2二分法递归#二分法递归求最小值的函数defMin(A,n):ifn==1:returnA[0]else:mid=n//2#中间元素的位置(下标)leftA=A[:mid]#左边子序列rightA=A[mid:]#右边子序列leftMin=Min(leftA,mid)#递归求左边的最小rightMin=Min(rightA,n-mid)#递归求右边的最小ifleftMinrightMin:#比较左右子序列的最小值returnrightMin#返回较小的else:returnleftMin#调用函数,求序列中的最小值while(1):#循环n=int(input(请输入元素个数:))#输入元素个数ifn1:#个数小于0结束breakelse:#个数大于0输入元素a=[]#开始列表为空foriinrange(0,n):#循环输入n个数x=float(input(请输入第+str(i+1)+元素))#输入a.append(x)#添加到列表中print(它们的最小值为:,Min(a,n))#求最小值并显示print()#换行第3题猴子吃桃问题defmonkeypeach(n):#函数ifn==10:#第10天的桃子数,是确定的return1#第10天的桃子数是1,计算结果为1,返回1else:#计算的不是第10天tmp=2*(monkeypeach(n+1)+1)#等于后一天的桃子数加1再乘2returntmp#返回计算结果print(本程序求解猴子吃桃问题)n=int(input('请输入天数([1,10],超出范围程序结束):'))while(n0andn11):num=monkeypeach(n)#调用函数得到计算结果print('第',n,'天桃子的数量为:',num)n=int(input('请输入天数:'))print(程序结束)测试结果
本文标题:最大最小猴子吃桃的Python程序
链接地址:https://www.777doc.com/doc-5034392 .html