收藏 分销(赏)

最大最小猴子吃桃的Python程序.doc

上传人:pc****0 文档编号:7205158 上传时间:2024-12-27 格式:DOC 页数:7 大小:352KB 下载积分:10 金币
下载 相关 举报
最大最小猴子吃桃的Python程序.doc_第1页
第1页 / 共7页
最大最小猴子吃桃的Python程序.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
求最大值、最小值,解猴子吃桃问题的Python程序 ylzhao 2013.12.5 1.求数组元素的最大值 解法1 非递归法 #求最大值的函数,非递归 def Max(A,n): maxdata=A[0] for i in range(1,n): if A[i]>maxdata: maxdata=A[i] return maxdata #调用函数,求序列中的最大值 while(1): #循环 n=int(input("请输入元素个数:")) #输入元素个数 if n<1: #个数小于0结束 break else: #个数大于0输入元素 a=[] #开始列表为空 for i in range(0,n): #循环输入n个数 x=float(input("请输入第"+str(i+1)+"元素")) #输入 a.append(x) #添加到列表中 print("它们的最大值为:",Max(a,n)) #求最大值并显示 print("") #换行 解法2 一般递归法 #求最大值的函数,一般递归 def Max(A,n): if n==1: return A[0] #一个元素时直接返回 else: m=Max(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: #个数大于0输入元素 a=[] #开始列表为空 for i in range(0,n): #循环输入n个数 x=float(input("请输入第"+str(i+1)+"元素")) #输入 a.append(x) #添加到列表中 print("它们的最大值为:",Max(a,n)) #求最大值并显示 print("") #换行 解法3 二分法递归 #二分法递归求最大值的函数 def Max(A,n): if n==1: return A[0] else: mid=n//2 #中间元素的位置(下标) leftA=A[:mid] #左边子序列 rightA=A[mid:] #右边子序列 leftMax=Max(leftA,mid) #递归求左边的最大 rightMax=Max(rightA,n-mid) #递归求右边的最大 if leftMax<rightMax: #比较左右子序列的最大值 return rightMax #返回较大的 else: return leftMax #调用函数,求序列中的最大值 while(1): #循环 n=int(input("请输入元素个数:")) #输入元素个数 if n<1: #个数小于0结束 break else: #个数大于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元素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] #一个元素时直接返回 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: #个数大于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: 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 #返回较小的 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("请输入第"+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: #计算的不是第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("程序结束") 测试结果
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服