write in front
大家好,我是Aileen.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
本文由 Aileen_0v0 原创 CSDN首发 如需转载还请通知⚠
个人主页:Aileen_0v0—CSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏:Aileen_0v0的PYTHON学习系列专栏——CSDN博客
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本
目录
函数递归概念及例子
1.1递归代码两要素:
1.2递归的缺点:
1.3递归的优点:
函数参数
2.1函数参数默认值
2.2默认参数使用的注意事项
2.3函数的关键字参数
函数总结
函数递归:就是一个函数,自己调用自己
#写一个函数,求 n 的阶乘(n 是正整数)
def f(n):
result = 1
for i in range (1,n+1):
result *= i
return result
print(f(5))
#-----------------------------------
#结果:120
#利用递归方法求n的阶乘
#首先先思考
#递推公式:n! => n * (n - 1)!
#结束条件:1! => 1
def f(n):
if n == 1:
return 1
return n * f(n - 1)
print(f(5))
递归的代码,虽然很多时候看起来写法很简单,但是执行过程可能会非常复杂!!
下面是利用debug调试的过程:
1.1递归代码两要素:
递归代码两要素可以对比数学归纳法记忆
递归代码两要素 数学归纳法 1.递归条件 1.初始条件 2.递归的递推公式 2.递推公式
1.2递归的缺点:
1.执行过程非常复杂,难以理解~ ~
2.递归代码容易出现" 栈溢出 "的情况~ "栈":指的是函数的调用栈
3.递归代码一般可以转换成等价的循环代码~ ~
并且,循环的版本通常运行速度要比递归版本有优势~ ~(函数调用也是有开销的)
1.3递归的优点:
代码非常简洁!!尤其是处理一些"问题本身就是通过递归的方式定义的"
数据结构~二叉树~ ~
python中的函数,可以给形参指定默认值 带有默认值的参数,可以在调用的时候不传参.
def add(x,y): print(f"x = {x}, y = {y}") #在函数内部加上打印信息方便我们进行调试~ ~ return x + y result = add(10,20) print(result)
上面的在函数内部加上打印信息方便我们进行调试~ ~
但是,像这种调试信息,希望在正式发布的时候不要出现,只是在调试阶段才有~ ~
所以我们可以给他指定一个默认参数debug=False~
这个形参的默认值就是False
带有默认值的形参 就可以在调用函数的时候,不必传参~
#参数默认值 #python中的函数,可以给形参指定默认值 #带有默认值的参数,可以在调用的时候不传参. def add(x,y,debug=False): #指定一个默认参数debug=False if debug: print(f"x = {x}, y = {y}") #在函数内部加上打印信息方便我们进行调试~ ~ return x + y result = add(10,20) print(result) #--------------------------- #运行结果:30
我们可以通过手动传参影响这个默认值~
通过这样的默认值,就可以让函数设计更灵活~ ~
2.2默认参数使用的注意事项
Python中要求带有默认值的形参,得在形参列表的后面~ ~
而不能在 前面 / 中间!
就算是多个带有默认参数的形参,这些都得放到后面!!
按照先后顺序来传参~ ~
这种传参风格,称为"位置参数"-------->这种方式是各个编程语言中最普遍的传参方式
现在我要介绍的是另一种方式--------->"关键字传参":按照形参的名字来进行传参!
#关键字传参 def test(x,y): print(f"x={x}") print(f"x={y}") test(x=10,y=20) test(y=100,x=200)
通过上面的代码,可以非常明显地告诉程序,你的参数要传给谁!!
另外可以无视形参和实参的顺序!!
此外,位置参数 和 关键字参数 还能混着用,只不过混着用的时候要求,位置参数在前,关键字参数在后~ ~
关键字参数,一般也是搭配着默认参数来使用的~
一个函数可以提供很多参数,来实现对这个函数内部功能做出一些调整设定~ ~
为降低调用者的使用成本,就可以把大部分参数设定出默认值~
当调用者需要调整其中一部分参数时,就可以搭配关键字参数来进行操作~ ~
函数的知识点就分享到这里啦~
喜欢就一键三连支持一下吧♥~
谢谢家人们!