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


猜你喜欢
- 本文实例讲述了python3 property装饰器实现原理与用法。分享给大家供大家参考,具体如下:学习python的同学,慢慢的都会接触到
- 前言声明: 以下文章所包含的结论都是基于 typeScript@4.9.4 版本所取得的。extends 是 typeScript 中的关键
- 一、前言Go程序像C/C++一样,如果开发编码考虑不当,会出现cpu负载过高的性能问题。如果程序是线上环境或者特定场景下出现负载过高,问题不
- 快排是python经典算法之一。1、下面讲解的是什么是快排和快排的图示。2、快排是一种解决排序问题的运算方法。3、快排的原理:在数组中任意选
- 主键的生成方式主要有三种: 一. 数据库自动生成 二. GUID 三. 开发创建 严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行
- 在这个自动化时代,我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。 那么在本文中
- PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可。dianji.html代码:<a href="a
- PHP sessionphp session 反序列化漏洞存在的原因:当序列化session和读取反序列化字符时采用的序列化选择器不一样时,
- 一、日志库选型需要和比较1.日志库选型需求日志性能不同日志级别可读性(包括日志采集、监控等)文件切割(不同维度分割)2.日志库比较记录一条消
- CSS Sprites技术早在2005年 CSS Zengarden 的园主 Dave Shea就在ALA发表对该技术的详细阐述。原先只在C
- Mysql字段为null的加减乘除运算数据库表test_table如下查询:select id,total,used,(total - us
- 这段程序的方法是利用XMLHTTP来读取腾讯网站的相应HTML代码获取QQ的头像,根据这个想法,我们还
- 算法介绍迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其
- crtrl.py监控Apache服务器进程的Python 脚本!/usr/bin/env Python import os, sys, ti
- 鲲之鹏的技术人员将在本文介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法。通过我们抓包分析发现,微信公众号的历史数据是
- Python是一门非常酷的语言,因为很少的Python代码可以在短时间内做很多事情,并且,Python很容易就能支持多任务和多重处理。py&
- Python实现12306火车票抢票系统效果图如下所示:具体代码如下所示:import urllib.request as request
- 1.方法方法描述bbox(item, column=None)返回指定item的框选范围,或者单元格的框选范围column( cid, op
- 近日,有关微软Open XML标准的问题又引发了某些业内人士的关注。其一是因为日前ISO(国际标准组织)成员南非和巴西相继就ISO批准微软的
- 作为一个从 PHP 转 Java 的人,发现 alibaba 的 arthas 很好用。通过 arthas 的 redefine 命令,可以