最大最小猴子吃桃的PYTHON程序
全国计算机等级考试二级Python真题及解析(8)图文程序填空阅读填空程序试题

全国计算机等级考试二级Python真题及解析(8)图文程序填空阅读填空程序试题一、程序填空1.完善程序实现以下功能并保存。
输出数组的最大值。
arr1 =[12, 435, 76, 24, 78, 54, 866, 43]________ = -32768for i in range(0,7):if arr1[i] > max1 : max1 = ________print("最大值是:", ________)input("运行完毕,请按回车键退出...")2.阅读程序。
分析有关多项式的代码并回答问题。
求1!+2!+3!+……+20!的和。
n=0s=0t=1for n in range(1,21):t*=ns+=tprint(s)(1)n的作用是________________。
(2)s的作用是 ______________。
(3)t的初值必须赋值为1,这是因为_________。
(4)t*=n的等价语句是 __________(5)s+=t的等价语句是 ______。
3.调试程序。
请阅读以下程序并写出运行结果。
fruites=['banana','apple','mango']for fruit in fruites:print(fruit)a=len(fruites)print('a=',a)_________________4.以下是计算s = 1+6+11+...+ 101的程序代码,请补全程序。
s=0for i in range(1,102, ):s=print( s)请补充完成上述程序①_________ ②_________5.程序分析题学校举行校园歌手大赛,评委由6人组成。
评分方法:去掉一个最高分和一个最低分,计算其余4位评委的平均分,作为选手的最终得分。
max记录最高分; min记录最低分; s 记录六位评委的总分; aver记录最终得分。
最大最小猴子吃桃的Python程序

求最大值、最小值,解猴子吃桃问题的Python程序ylzhao 2013.12.51.求数组元素的最大值解法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结束breakelse: #个数大于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结束breakelse: #个数大于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结束breakelse: #个数大于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结束breakelse: #个数大于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结束breakelse: #个数大于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再乘2return tmp #返回计算结果print("本程序求解猴子吃桃问题")n=int(input('请输入天数([1,10],超出范围程序结束):'))while(n>0 and n<11):num=monkeypeach(n) #调用函数得到计算结果print('第',n,'天桃子的数量为:',num)n=int(input('请输入天数:'))print("程序结束")测试结果。
数据结构与算法 猴子吃桃

课程设计说明书课程名称:数据结构与算法设计题目:猴子吃桃问题院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:2010年6月18日课程设计任务书设计题目猴子吃桃问题学生姓名蒋耀辉所在院系计算机科学与信息工程系专业、年级、班08软件工程班设计要求:分别用以下三种方法实现对猴子吃桃问题的求解:(1)数组数据结构(2)链表数据结构(3)递归问题描述如下:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第十天就只剩下一只桃子,求出它们第一天摘了多少桃子。
学生应完成的工作:以小组为单位,分工合作完成以下任务(1)编写程序实现对上述猴子偷桃问题的求解并运行出结果;(2)在制定期限内提交程序并完成答辩;(3)提交出详细的课程设计说明书。
参考文献阅读:(1)严蔚敏,吴伟民.数据结构(C语言版)—北京:清华大学出版社2007IBSN978-7-302-14751-0;(2)谭浩强.C语言程序教程—北京:清华大学出版社2007.7 IBSN978-7-302-15157-9;(3)(美)(Liang,Y.D)C++程序设计—北京:机械工业出版社 2008.5 IBSN978-7-111-23996-3。
工作计划:1、确定自己负责模块的作用2、写出模块算法3、写出源代码4、验证与修改任务下达日期:2010 年 6 月7 日任务完成日期:2010 年 6 月18 日指导教师(签名):学生(签名):(设计题目)摘要:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:1)采用数组数据结构实现上述求解2)采用链数据结构实现上述求解3)采用递归实现上述求解关键词:数组链递归目录1. 设计背景 (1)1.1时代背景 (1)1.2能力要求 (1)2.设计方案 (1)2.1初步分析 (1)2.2 问题细化 (2)3. 方案实施 (2)3.1初步探讨 (2)3.2 详细过程 (2)4.结果与结论 (3)5. 收获与致谢 (3)6. 参考文献 (3)7. 附件 (4)源程序 (4)1. 设计背景1.1时代背景数据结构是由数据元素依据某种逻辑联系组织起来的。
猴子吃桃子递归算法

递归算法案例—猴子吃桃子一、案例描述某天,一只猴子摘了一堆桃子,具体多少它没数。
猴子每天吃了其中的一半然后再多吃了一个,第二天吃剩余的一半后再多吃了一个,直到第10天,猴子发现只有一只桃子。
问这只猴子在第一天摘了多少个桃子二、算法分析这只猴子共用了10天吃桃子,只知道最后一天剩余1只桃子,要想求出第1天剩余的桃子数,就先要求出第2天剩余的桃子数,以此类推。
假设An表示第n天剩余的桃子数量,则有如下关系:A1=(A2+1) x 2A2=(A3+1) x 2A3=(A4+1) x 2….A1=(A10+1) x 2A10=1从上述的式子可知,只能通过倒推来求得第一天的桃子数三、算法实现算法代码实现如下:#include<stdio.h>/***@briefpeach*@paramn:猴子吃桃子的天数*@return*/long peach(int n){int pe;if(n==1){return1;}else{pe=(peach(n-1)+1)*2;}return pe;}int main(void){int n;//天数long peachnum;//最初桃子数printf("pleasenumberofDate");scanf("%d",&n);peachnum=peach(n);printf("Thepreviousnumberis:%1d",peachnum);return0;}程序中使用递归调用peach函数来计算第一天的桃子数量。
其中关键是前一天总比后一天多一半加1.当n=10的时候,正好求出猴子吃桃子问题。
猴子吃桃问题的VB程序

猴子吃桃问题的VB程序:有一群猴子摘了一堆桃子,第一天,吃了一半,觉得不过瘾,又吃了一只;以后每天也是如此,到第十天一看,只剩下一只桃子。
问原来共有多少只桃子?程序流程图为:VB程序为:Rem 设第十天的桃子数X=1,然后计算第九天的X: x九=2*(x十+1)x = 1Print "第10 天的桃子数是:"; xFor k = 9 To 1 Step -1x = 2 * (x + 1)Print "第"; k; "天的桃子数是:"; xNextPrivate Sub Form_click()Dim n As IntegerDim num As Integernum = 1For n = 1 To 9num = (num + 1) * 2NextMsgBox "桃子总共" & num & "个"End SubDim x%, i%Clsx = 1Print "第7天有了1个"For i = 6 To 1 Step -1x = (x + 1) * 2Print "第"; i; "天有"; x; "个"Next i水仙花数问题:第一种方法:单循环分离数Private Sub Form_Load() 1,装载窗体时不能运行Print应改为form_click Dim a, b, c, i As IntegerFor i = 100 To 1000a = i / 100 '百位上的数2,你把整除符号记错了,此处应将"/"改为"\"b = (i / 10) Mod 10 '十位上的数3,此处应改为b=(i-a*100)\10c = i Mod 10 '个位上的数If 100 * a + 10 * b + c = a * a * a + b * b * b + c * c * c ThenPrint i '因100 * a + 10 * b + c =i,可以简化程序改为iEnd IfNext iEnd Sub第二种方法:三重循环结构合成Private Sub Form_click()Dim a%, b%, c%For a = 1 To 9For b = 0 To 9For c = 0 To 9If a ^ 3 + b ^ 3 + c ^ 3 = a * 100 + b * 10 + c ThenPrint a * 100 + b * 10 + cEnd IfNext cNext bNext aEnd SubVB 多重循环结构的解读.2010-03-22 22:20 Def_Ud | 分类:VB | 浏览907次For i= 1 to 3for j= 1to ifor k= j to 3a=a+1next knext jnext i求详细解答.我有更好的答案提问者采纳2010-03-23 09:47给你你最直接的吧i=1j=1k=1 a=1k=2 a=2k=3 a=3i=2j=1k=1 a=4k=2 a=5k=3 a=6j=2k=2 a=7k=3 a=8i=3j=1k=1 a=9k=2 a=10k=3 a=11j=2k=2 a=12k=3 a=13j=3k=3 a=14最后结果应该是a=14楼上的是语句解释有1根长度为321米的钢材料,要将他截取成两种规格a.b.a.b的长度分别为17米和27米的短料,每种至少1段。
Python习题选编

Python习题选编华东师大信息学院计算中心一.程序结构与算法部分:1. 编写一个python程序,输入两个数,比较它们的大小并输出其中较大者。
参考代码:x = int(input("Please enter first integer: "))y = int(input("Please enter second integer: "))if (x == y):print("两数相同!")elif (x > y):print("较大数为:",x)else:print("较大数为:",y);2.写一个算法(流程图和python程序):输入三个数,输出其最大者。
参考代码:a,b,c=3,4,5if a <= b:if c < b:print ("b是最大的数")else:print ("c是最大的数")else:if c < a:print ("a是最大的数")else:print ("c是最大的数")3.使用Python编程,求1~100间所有偶数的和。
参考代码:sum=0for x in range(1,101):if x % 2==0:print(x)sum=sum+xprint("累加和是:",sum)4.用Python编写程序,输入一年份,判断该年份是否是闰年并输出结果。
注:凡符合下面两个条件之一的年份是闰年。
(1)能被4整除但不能被100整除。
(2)能被400整除。
参考代码:year = int(input("Please enter the year: "))if ((year%4==0 and year%100!=0) or (year%400==0)):print(year,"is a leap year.")else:print(year,"is not a leap year.")5.用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?参考代码:cunkuan = 10000 #本金10000元years=0while cunkuan<20000:years+=1cunkuan=cunkuan*(1+0.0325)print(str(years)+"年以后,存款会翻番")6.从键盘接收一百分制成绩(0~100),要求输出其对应的成绩等级A~E。
《Python程序设计》题库 - 读程序题

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1#Filename:002.py2 i = int(raw_input('Enter the profit:'))3 arr = [1000000,600000,400000,200000,100000,0]4 rat = [0.01,0.015,0.03,0.05,0.075,0.1]5 r = 06for idx in range(0,6):7if i>arr[idx]:8 r+=(i-arr[idx])*rat[idx]9print (i-arr[idx])*rat[idx]10 i=arr[idx]11print r【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?【感谢12楼的同学peiqianggao提供代码】# -*- coding:utf-8 -*-'''Created on 2015-6-7# 第三题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少@author: Administrator'''import mathnum = 1while True:if math.sqrt(num + 100)-int(math.sqrt(num + 100)) == 0 and math.sqrt(num + 268)-int(math.sqrt(num + 268)) == 0:print(num)breaknum += 1【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1#author: 叛军2import datetime3import time4 dtstr = str(raw_input('Enter the datetime:(20151215):'))5 dt = datetime.datetime.strptime(dtstr, "%Y%m%d")6 another_dtstr =dtstr[:4] +'0101'7 another_dt = datetime.datetime.strptime(another_dtstr, "%Y%m%d") 8print (int((dt-another_dt).days) + 1)【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)

基于Python-Pycharm实现的猴⼦摘桃⼩游戏(源代码)源码及注释:import pygamefrom sys import exitfrom random import randintimport timeimport os# 定义窗⼝分辨率SCREEN_WIDTH = 700SCREEN_HEIGHT = 600current_path = os.path.abspath(os.path.dirname(__file__))root_path = current_path[:current_path.find("monkey-picking-peach\\") + len("monkey-picking-peach\\")] \+ "resource\\images\\"# 图⽚BACKGROUND_IMAGE_PATH = root_path + "background.jpg"MONKEY_IMAGE_PATH = root_path + "monkey.png"APPLE_IMAGE_PATH = root_path + "apple.png"JUMP_STATUS = FalseOVER_FLAG = FalseSTART_TIME = Noneoffset = {pygame.K_LEFT: 0, pygame.K_RIGHT: 0, pygame.K_UP: 0, pygame.K_DOWN: 0}# 定义画⾯帧率FRAME_RATE = 60# 定义动画周期(帧数)ANIMATE_CYCLE = 30ticks = 0clock = pygame.time.Clock()# 猴⼦类class Monkey(pygame.sprite.Sprite):# 苹果的数量apple_num = 0def __init__(self, mon_surface, monkey_pos):pygame.sprite.Sprite.__init__(self)self.image = mon_surfaceself.rect = self.image.get_rect()self.rect.topleft = monkey_posself.speed = 5# 控制猴⼦的移动def move(self, _offset):global JUMP_STATUSx = self.rect.left + _offset[pygame.K_RIGHT] - _offset[pygame.K_LEFT]y = self.rect.top + _offset[pygame.K_DOWN] - _offset[pygame.K_UP]if y < 0:self.rect.top = 0JUMP_STATUS = Trueelif y >= SCREEN_HEIGHT - self.rect.height:self.rect.top = SCREEN_HEIGHT - self.rect.heightJUMP_STATUS = Falseelse:self.rect.top = yJUMP_STATUS = Trueif x < 0:self.rect.left = 0elif x > SCREEN_WIDTH - self.rect.width:self.rect.left = SCREEN_WIDTH - self.rect.widthelse:self.rect.left = x# 接苹果def picking_apple(self, app_group):# 判断接到⼏个苹果picked_apples = pygame.sprite.spritecollide(self, app_group, True)# 添加分数self.apple_num += len(picked_apples)# 接到的苹果消失for picked_apple in picked_apples:picked_apple.kill()# 苹果类class Apple(pygame.sprite.Sprite):def __init__(self, app_surface, apple_pos):pygame.sprite.Sprite.__init__(self)self.image = app_surfaceself.rect = self.image.get_rect()self.rect.topleft = apple_posself.speed = 1def update(self):global START_TIMEif START_TIME is None:START_TIME = time.time()self.rect.top += (self.speed * (1 + (time.time() - START_TIME) / 40))if self.rect.top > SCREEN_HEIGHT:# 苹果落地游戏结束global OVER_FLAGOVER_FLAG = Trueself.kill()# 初始化游戏pygame.init()screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption("猴⼦接苹果")# 载⼊图⽚background_surface = pygame.image.load(BACKGROUND_IMAGE_PATH).convert() monkey_surface = pygame.image.load(MONKEY_IMAGE_PATH).convert_alpha()apple_surface = pygame.image.load(APPLE_IMAGE_PATH).convert_alpha()# 创建猴⼦monkey = Monkey(monkey_surface, (200, 500))# 创建苹果组apple_group = pygame.sprite.Group()# 分数字体score_font = pygame.font.SysFont("arial", 40)# 主循环while True:if OVER_FLAG:break# 控制游戏最⼤帧率clock.tick(FRAME_RATE)# 绘制背景screen.blit(background_surface, (0, 0))if ticks >= ANIMATE_CYCLE:ticks = 0# 产⽣苹果if ticks % 30 == 0:apple = Apple(apple_surface,[randint(0, SCREEN_WIDTH - apple_surface.get_width()), -apple_surface.get_height()]) apple_group.add(apple)# 控制苹果apple_group.update()# 绘制苹果组apple_group.draw(screen)# 绘制猴⼦screen.blit(monkey_surface, monkey.rect)ticks += 1# 接苹果monkey.picking_apple(apple_group)# 更新分数score_surface = score_font.render(str(monkey.apple_num), True, (0, 0, 255)) screen.blit(score_surface, (620, 10))# 更新屏幕pygame.display.update()for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()# 控制⽅向if event.type == pygame.KEYDOWN:if event.key in offset:if event.key == pygame.K_UP:offset[event.key] = 80else:offset[event.key] = monkey.speedelif event.type == pygame.KEYUP:if event.key in offset:offset[event.key] = 0# 移动猴⼦if JUMP_STATUS:offset[pygame.K_DOWN] = 5offset[pygame.K_UP] = 0monkey.move(offset)# 游戏结束推出界⾯score_surface = score_font.render(str(monkey.apple_num), True, (0, 0, 255)) over_surface = score_font.render(u"Game Over!", True, (0, 0, 255)) screen.blit(background_surface, (0, 0))screen.blit(score_surface, (620, 10))screen.blit(over_surface, (250, 270))while True:pygame.display.update()for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()⾷⽤指南:使⽤的图⽚monkey.png:background.jpg:apple.png:这是我的⽂件⽬录,学习者也可改为⾃⼰的:更改的代码位置:root_path = current_path[:current_path.find("monkey-picking-peach\\") + len("monkey-picking-peach\\")] \ + "resource\\images\\"游戏截图:到此这篇关于基于Python-Pycharm实现的猴⼦摘桃⼩游戏的⽂章就介绍到这了,更多相关Python 猴⼦摘桃⼩游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
求最大值、最小值,解猴子吃桃问题的
Python程序
ylzhao2013.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天的桃子数,是确定的
return1#第10天的桃子数是1,计算结果为1,返回1 else:#计算的不是第10天
tmp=2*(monkeypeach(n+1)+1)#等于后一天的桃子数加1再乘2
return tmp#返回计算结果
print("本程序求解猴子吃桃问题")
n=int(input('请输入天数([1,10],超出范围程序结束):'))
while(n>0and n<11):
num=monkeypeach(n)#调用函数得到计算结果
print('第',n,'天桃子的数量为:',num)
n=int(input('请输入天数:'))
print("程序结束")
测试结果。