~~函数基础(四):递归函数~~
时间:2019-07-04
本文章向大家介绍~~函数基础(四):递归函数~~,主要包括~~函数基础(四):递归函数~~使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
进击のpython
递归函数
学过数学的可能多多少少听过“递归”这个词
那么递归函数到底是怎么个函数呢?
老样子,从需求找方法!
我想要 100/2 结果继续除2,直到结果为零,然后打印每一步的结果
怎么写呢?可以用循环!对!
n = 100
while n > 0:
n = int(n / 2)
print(n)
要的就是这种结果!但是,总有艮的
就想用函数来解决这个问题
甚至更过分的!还不想用循环!
能做吗?于是就有大傻子科学家研究出另一种写法:
def func(n):
n = int(n/2)
print(n)
func(100)
这么写还懂是吧
发现,n 这个变量就变成 50 了,然后还是要执行这个函数
也就是说,我可能要多次调用这个函数!
所以,就有了接下来的想法:
def func(n):
n = int(n / 2)
print(n)
if n > 0:
func(n)
func(100)
成功了!那光成功不行啊,咱们得研究研究怎么做到的呢???
有感觉出循环了吗?通过不断的自我调用,达到了目的
每一次的函数的输出都是基于上次的返回结果!
进阶
总有刁民想害朕!
这不,有人写了这个代码!
def func(n): n = int(n / 2) print(n) if n > 0: func(n) print(n) func(100)
和上面的比,就多了一句话(找不到?捐眼睛吧)
你试试结果是什么?和你想的一样吗?
如果你没学过这地方
指定和你想的不一样!
输出结果是这样的:
不是你想得100 也不是你想的1或者0吧!
那到底为什么呢????
以我现在的能力我只能这么给你解释
要是不明白的话,确实是我能力不足
还请大佬在下面评论一下,多谢!
所以,输出就是那个鬼样子!
特性
必须有明确的结束条件
每次进入更深一层的递归的时候,问题规模就会减少
递归效率不高,容易栈溢出(别问,问就自己百度)
原文地址:https://www.cnblogs.com/jevious/p/11135210.html
- Discuz 5.x/6.x/7.x投票SQL注入分析
- 论如何高效的挖掘漏洞
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
- 走进科学:如何正确的隐藏自己的行踪
- 比特儿(Bter.com) 比特币交易平台被盗事件全解析
- BitTorrent Bleep:无法被监控的聊天软件
- QQ蠕虫的行为检测方法
- 趋势OfficeScan系列产品漏洞分析
- [置顶] 浅谈我为什么选择用Retrofit作为我的网络请求框架
- 基于HTML5的Canvas指纹跟踪技术
- 有关 Android 应用桌面角标 (BadgeNumber) 实现的探讨
- XSS的原理分析与解剖
- Hold安全公司公布俄罗斯大型泄密事件细节
- 走近科学:如何搞定各种各样的终端机
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- hikvision SDK使用(转)
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第11章 训练深度神经网络(上)
- 海康SDK开发步骤
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第11章 训练深度神经网络(下)
- applet跨域访问的安全性问题(java.security.AccessControlException:access denied)
- JSON解析问题:net.sf.json.JSONException: There is a cycle in the hierarchy!
- 海康相机SDK联合c++标定
- 开发一个Node命令行小玩具全过程--高颜统计工具
- 消息未读之点不完的小红点(Node+Websocket)
- pkg版本规范管理自动化最佳实践
- 数据库驱动问题:MySQLNonTransientConnectionException
- 喜大普奔,es2019登场
- [译] Object.assign 和 Object Spread 之争, 用谁?
- 急速 debug 实战二(浏览器 - 调试线上篇)
- via the 'serverTimezone' configuration property