python小球落地问题及解决(递归函数)
作者:菠萝鱿 发布时间:2022-11-08 23:33:01
标签:python,小球落地,递归函数
问题
一个球从 100 米高的自由落下,每次落地后反跳回原高度的一半。求第10次弹起的高度与途径的总路程
什么是递归函数
函数的递归调用是函数嵌套调用的一种特殊形式,在调用一个函数的过程中又直接或者间接地调用该函数本身,称之为函数的递归调用
递归死循环是没有意义的
递归调用必须有两个明确的阶段:
1. 回溯: 一次次递归调用下去,说白了就一个重复的过程,
但需要注意的是每一次重复问题的规模都应该有所减少,
直到逼近一个最终的结果,即回溯阶段一定要有一个明确的结束条件
2. 递推: 往回一层一层推算出结果
例子
假设有5个人,第五个人的年龄是第四个年龄+,以此类推
'''
age(5) = age(4) + 2
age(4) = age(3) + 2
age(3) = age(2) + 2
age(2) = age(1) + 2
age(1) = 18
'''
我们可以将第几个人定义成n,然后形成一个数学格式:
age(n) = age(n-1) + 2 # n>1
age(n) = 18 # n=1
这时候只需要创建函数,把这两块写入,即可完成递归函数的创建:
def age(n):
if n == 1:
return 18
if n > 1:
return age(n-1) + 2
print(age(5))
小球落地解题思路
首先我们需要注意三个点
1、小球从100米高度落下,所以小球在第一次弹起的过程中就已经行走了100m
2、小球最后一次弹起并没有下落
3、每次弹起的高度需要*2才是此次弹起的距离
far = [100]
def jump(n):
if n == 1:
far.append(100)
return 50
else:
b = jump(n-1) / 2
far.append(b*2)
return b
print(jump(10))
print(far)
print(sum(far)-jump(10))
python递归函数介绍
1、代码
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print([fibonacci(x) for x in range(10)])
2、运行截图
3、补充说明
【1】递归必须有终止条件
【2】递归的规模要比上次的小
【3】递归的效率很低,可以通过程序调试看出,进去是几层出来又得几层,使得存储空间变大。
来源:https://blog.csdn.net/weixin_45248616/article/details/123481767
0
投稿
猜你喜欢
- 前面的python3入门系列基本上也对python入了门,从这章起就开始介绍下python的爬虫教程,拿出来给大家分享;爬虫说的简单,就是去
- 什么是memcached:memcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJo
- 1 引言 在关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Tran
- pycharm永久激活码6ZUMD7WWWU-eyJsaWNlbnNlSWQiOiI2WlVNRDdXV1dVIiwibGljZW5zZWV
- 一般情况下会有几种情况需要你把数据库设为只读: 1. Insert,Update,Delete 触发器 2. Check 约束 和 Dele
- 我就废话不多说啦,大家还是直接看代码吧!import requests,randomfrom lxml import etreeimport
- 前言人脸识别在LWF(Labeled Faces in the Wild)数据集上人脸识别率现在已经99.7%以上,这个识别率确实非常高了,
- asp中利用XMLhttp对象获取远程的数据,然后用二进制输出到客户浏览器,让客户下载数据,此例从某一远程服务器获取一个压缩包,并且输出到浏
- 看到标题就知道有逗比忘了密码。。。没错就是我。你也忘了密码? 不要着急!0x00:第一步:运行django shellpython3 man
- 概要:要实现点赞功能,需要实现的有:谁进行的点赞、什么时候进行点赞、点赞的对象是谁、每一个对象的点赞数量是多少、点赞过后还需要能够取消点赞,
- 前言很多时候我们要用到图片上传功能,如果图片一直用放在别的网站上,通过加载网址的方式来显示的话其实也挺麻烦的,我们通过使用 django-f
- argparse模块用法一、 概念argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直
- FTP服务的主动模式和被动模式在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些:主动模式:主
- 1、Dreamweaver中的复制我在网页中复制的文字,粘贴到Dreamweaver中时,它总是带有原来网页的格式,请问如何只复制其中的文本
- 有时候我们不希望浏览器使用缓存加快网页的显示,尤其是那些论坛之类的频繁更新内容的网页,在网上有说可以使用下面的方法来屏蔽缓存,但是我试了效果
- 主要是运用java.util.regex类。 import java.util.regex.Matcher;import java
- 关于distributedsampler函数的使用1.如何使用这个分布式采样器在使用distributedsampler函数时,观察loss
- 大致功能:$() 取得所有元素$("div") 取得所有DIV$("#a1") 取得ID为a1的元素
- 一、需求1.获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间,并存在一个txt文件中2.将这个txt文件发送给指定的邮
- 作为一个新手,你需要以下3个步骤:1、用户注册 > 2、获取token > 3、调取数据数据内容:包含股票、基金、期货、债券、外