C++两个函数可以相互递归吗_Python里的函数调用2

接上文,Python中函数入门,有关内置函数及定义。

今天,我们一起看看函数的调用。

四、函数调用(Function invoke)

函数必须先定义再调用,可以一次定义多次使用。切不可先写调用后写

1、调用格式
1接收变量 = 函数名(实参值列表…) 

如果有位置参数,则必须传入实参必;
如果有返回值,可以接收,也可以不接收,看你是否需要这个值,一般我们对有返回值的都接收。但是接收了没有返回值的函数,则值为None;唯一的NoneType类型的实例。
如:两个函数定义

1

调用如下:

1
2、调用顺序

调用之前确保函数已经定义了,函数一旦定义了,就可以被多次调用,还可以导入其他模块使用。调用的顺序与定义的顺序无关。代码执行是从上往下的执行。

 1
3、执行顺序

函数需要先定义再使用,函数被调用时,进去函数执行,函数执行结束或者遇到return执行结束,将返回值返回,同时交出执行权给调用处。叶落归根。

42bdd8aa05e5d196797af2826c7bb956.png

1
4、实参能被函数修改吗?

有一个列表,能否利用自定义的函数对其直接修改?
有一个字典,能否利用自定义的函数对其删除某个键值对?

 1

执行结果:

1函数执行前: [

那若是实参是不可变类型能通过函数修改内容吗?
哈哈,这个问题其实蠢爆了,不可变类型肯定没法修改内容,我们只能修改对应变量的指向,与修改内容完全无关。

5、嵌套调用

嵌套调用就是类似数学里的综合式,比如下面的这种:

1t = 

我们可以直接这样写:

1t = 

试想一下,我们现在的生活的衣食住行,是否都是自己自给自足的,显然分出出现以后我们大部分要依赖外界提供对吧,那么若是我么你的生活就是一个函数,那么衣食住行我们就把功能外包给其他人,想吃饭调用一下餐馆的就餐功能或者函数,所以我们的生活处处都是函数的嵌套,我们都是站在巨人的肩膀上,要记住,我们要站在巨人的肩膀上,而不是什么都从头造,否则很难从石器时代走出来。

我们现在有一个主逻辑是实现登录操作,用户名与密码正确进入系统,错误拒绝登录,但是还有一个判断逻辑,就是用户名和密码不能为空功能,我们要让函数做分工,一个函数登录,一个函数校验输入内容。

 1
6、递归

引用或者调用自身的函数称为递归函数。递归结构包括两个部分:
递归头:函数执行的最小可能性问题,也就是什么时候结束引用自身;
递归体:引用自身。
/# 使用递归 实现阶乘

1

4ad45eb0898281ab70375e812064148f.png

1

二分法查找(binary search),又叫折半查找。就我我们过去的猜数字游戏,在[0,100]之间,才生成的随机整数,我们首先会猜50,减少一般的可能性,若是此时大了,我们猜75,又减少了一般的可能性,一步一步缩小范围,最多经过7次就可以定位这个值。LogN以2为底,log2(N)不大于7。我们分析一下如何用递归实现:
递归头:如果上下限相同,那么就是数字位置所在
递归体:找到区间的中间点,查找数字在左侧还是右侧,继续查找所在那半部分
注意:二分法查找只能在有序的序列中使用。

 1

递归会占用大量的堆栈保存现场,内存消耗极大,层次多较慢,慎重使用,但是递归的思想极好,不单单可以用来编程,管理的思路也是如此。


在视频里寻找更清晰的答案

函数的调用

函数的嵌套调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值