Python学习---递归函数的学习
2023-09-11 14:20:11 时间
定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返 回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)
实例1: (阶乘)
# 普通方法 def factorial(num): fac = num for i in range(1, num): fac *= i return fac print(factorial(4)) # 递归实现 def factorial(num): if num == 1: # 结束条件 return 1 return factorial(num - 1) * num print(factorial(4)) # 函数式编程实现: from functools import reduce print (reduce(lambda x,y: x*y, range(1,5))) # 24
实例2:斐波那契数列
# 普通实现: # 0 1 1 2 3 5 8 13 def fibo(n): before = 0 after = 1 ret = 0 for i in range(n - 1): ret = before + after before = after after = ret return ret print(fibo(6)) # 8 # 递归实现: # 0 1 1 2 3 5 8 13 def fibo_new(n): # n可以为零,数列有[0] if n <= 1: # 结束条件 f(0)=0,f(1)=1,f(2)=f(1)+f(0)-->符合return条件,所以<=1 return n return (fibo_new(n - 1) + fibo_new(n - 2)) # f(8) = f(7) + f(6) print(fibo_new(6)) # 8 # 其他实现 def fib(max): n, b, a = 0, 0, 1 while n < max: print(b) b, a = a, b+a # 赋值是同时执行的 n += 1 fib(6) # 8
实例3:求number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]中的正数的平均值
# 递归实现 number = [2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8] count = 0 li = [] for i in range(len(number)): if number[i] > 0: li.append(number[i]) count += 1 count = str(count) print("%s个正整数的和为%d" % (count, sum(li)))
# 函数式编程
# 待写
相关文章
- Python学习--12 异常处理、调试
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
- Python 排序---sort与sorted学习
- Python 日期和时间_python 当前日期时间_python日期格式化
- 【学习总结】Python-3-逻辑运算符
- 教你用Python实现简单监督学习算法
- 强化学习笔记:基于价值的学习之价值迭代(python实现)
- 机器学习笔记 - 使用python代码实现易于理解的反向传播
- Python编程语言学习:基于python各种库(matplotlib、Image)利用多种方法展示图片或进行图片可视化之详细攻略
- Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码
- Python编程语言学习:python编程语言中重要函数讲解之map函数等简介、使用方法之详细攻略
- Python语言学习之lambda:lambda函数的简介、使用方法、案例大全之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
- Python语言学习:解决python版本升级问题集合(python2系列→Python3系列)导致错误的总结集合
- Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- Python编程语言学习:python的列表的特殊应用之一行命令实现if判断中的两类判断
- Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
- 【阶段三】Python机器学习22篇:机器学习项目实战:GBDT分类模型
- Python Flask框架学习12:Flask 将表单数据发送到模板
- 多版本Python共存时pip给指定版本的python安装package的方法
- python学习之基本语法---语法规则---注释,标识符,关键字,命名规则(二)day8