python小代码13(递归函数&匿名函数)

您所在的位置:网站首页 第一天1元,第二天2元,第三天4元,30天后多少钱 python小代码13(递归函数&匿名函数)

python小代码13(递归函数&匿名函数)

2024-07-14 23:44| 来源: 网络整理| 查看: 265

什么是递归函数? 在函数内部,可以调用其他函数。 如果一个函数在内部调用自身本身,这个函数就是递归函数。

任务一:小孩的报酬*

任务内容: 一个小孩子给一个富翁做事,商量的报酬是第一天2角,第二天是第一天的2倍,依此类推,请问第20天后,这个小孩子能拿到多少钱? 1f 程序编写要求: ➢使用递归函数完成 ➢结果输出如下图所示: 在这里插入图片描述

代码:

#第二天的报酬是第一天的二倍加上0.2元 def ff(n): if n !=1: return ff(n - 1) * 2 + 0.2 else: return 0.2 # if n == 1: # return 0.2 # 递归停止 # return ff(n - 1) * 2+0.2 def f(n): for i in range(1,n+1): print("第%d天的报酬为:%.1f"%(i,ff(i))) f(20)

运行结果:

第1天的报酬为:0.2 第2天的报酬为:0.6 第3天的报酬为:1.4 第4天的报酬为:3.0 第5天的报酬为:6.2 第6天的报酬为:12.6 第7天的报酬为:25.4 第8天的报酬为:51.0 第9天的报酬为:102.2 第10天的报酬为:204.6 第11天的报酬为:409.4 第12天的报酬为:819.0 第13天的报酬为:1638.2 第14天的报酬为:3276.6 第15天的报酬为:6553.4 第16天的报酬为:13107.0 第17天的报酬为:26214.2 第18天的报酬为:52428.6 第19天的报酬为:104857.4 第20天的报酬为:209715.0

代码:

#第二天的报酬是第二天的二倍 def ff(n): if n !=1: return ff(n - 1) * 2 else: return 0.2 # if n == 1: # return 0.2 # 递归停止 # return ff(n - 1) * 2+0.2 def f(n): for i in range(1,n+1): print("第%d天的报酬为:%.1f"%(i,ff(i))) f(20)

运行结果:

第1天的报酬为:0.2 第2天的报酬为:0.4 第3天的报酬为:0.8 第4天的报酬为:1.6 第5天的报酬为:3.2 第6天的报酬为:6.4 第7天的报酬为:12.8 第8天的报酬为:25.6 第9天的报酬为:51.2 第10天的报酬为:102.4 第11天的报酬为:204.8 第12天的报酬为:409.6 第13天的报酬为:819.2 第14天的报酬为:1638.4 第15天的报酬为:3276.8 第16天的报酬为:6553.6 第17天的报酬为:13107.2 第18天的报酬为:26214.4 第19天的报酬为:52428.8 第20天的报酬为:104857.6

任务二:猴子偷桃(递归改写)

任务内容: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,就剩下一个桃子了。 求第一天共摘多少个桃子?

程序编写要求: ➢使用递归函数完成 ➢输出结果核对:第一天的桃子数是1534个

代码:

#第九天的桃=(第十天的桃+1)*2 #...... #第一天的桃=(第二天的桃+1)*2 def ff(day,peach): print("第%d天有%d个桃"%(day,peach)) peach = (peach+1) * 2 if day == 1: return peach return ff(day-1,peach) ff(10,1)

运行结果:

第10天有1个桃 第9天有4个桃 第8天有10个桃 第7天有22个桃 第6天有46个桃 第5天有94个桃 第4天有190个桃 第3天有382个桃 第2天有766个桃 第1天有1534个桃

任务三:斐波纳契数列之谜(递归改写)

任务内容: 前两个数都为1,从第三个数起每一个数为前两个数之和。要求输出此数列的前20个数

程序编写要求: ➢使用递归函数完成

代码:

def ff(n): if n == 1: return 1 elif n == 2: return 1 else: return ff(n - 1) + ff(n - 2) def main(n): for i in range(1, n+1): print("第%d个数为:%d"%(i,ff(i))) main(20)

运行结果:

第1个数为:1 第2个数为:1 第3个数为:2 第4个数为:3 第5个数为:5 第6个数为:8 第7个数为:13 第8个数为:21 第9个数为:34 第10个数为:55 第11个数为:89 第12个数为:144 第13个数为:233 第14个数为:377 第15个数为:610 第16个数为:987 第17个数为:1597 第18个数为:2584 第19个数为:4181 第20个数为:6765

任务四:求长方形的面积

任务内容: 要求从键盘输入长方形的长和宽,要求输出该长方形的面积。

程序编写要求: ➢使用匿名函数完成 ➢输出如下所示: 在这里插入图片描述 代码:

area=lambda length,wide:length*wide a=float(input("请输入长方形的长:")) b=float(input("请输入长方形的宽:")) print("长方形的面积是:",area(a,b))

运行结果:

请输入长方形的长:12.4 请输入长方形的宽:2.8 长方形的面积是: 34.72 请输入长方形的长:5 请输入长方形的宽:7 长方形的面积是: 35.0

任务五:使用递归函数实现阶乘

代码:

def ff(n): if n == 1: return 1 #递归停止 return n * ff(n - 1) print(ff(5)) # 输出结果: 120 print(ff(10)) # 输出结果: 3628800

任务六:使用递归函数,计算1到100之间相加之和

代码:

def sum(n): if n > 0: return n + sum(n - 1) else: return 0 #==0时递归停止 print(sum(100)) #结果为:5050


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3