夜光序言:

如果你越来越冷漠,你以为你成长了,但其实没有。长大应该是变得温柔,对全世界都温柔。
夜光带你走进python开发 (二十九)**语言

 

正文:函数和递归

函数和程序结构


 函数可以简化程序,函数可以使程序模块化
 用函数将较长的程序分割成短小的程序段,可以方便理解
 程序例子:

夜光带你走进python开发 (二十九)**语言

 将部分功能从程序中移出作为独立函数
 星号绘制函数

夜光带你走进python开发 (二十九)**语言


 星号数量计算函数

 

夜光带你走进python开发 (二十九)**语言
 整体控制函数

夜光带你走进python开发 (二十九)**语言

 夜光:完整程序可以写为。

夜光带你走进python开发 (二十九)**语言

 整个程序可读性很强。使用函数的思想编写程序,可以大大增加程序的模块化程度
 程序运行结果为:

夜光带你走进python开发 (二十九)**语言

递归的定义


 递归:函数定义中使用函数自身的方法
 经典例子:阶乘

n!= n(n-1)(n-2)...(1)


举例:5!=5(4)(3)(2)(1) =5 * 4!
推广: n!=n(n-1)! n! n(n1)(n2)...(1)


 阶乘的递归定义:

夜光带你走进python开发 (二十九)**语言

 0的阶乘:定义为1
其他数字:定义为这个数字乘以比这个数字小1的数的阶乘


 递归不是循环
 最后计算基例:0!。0!是已知值
 递归定义特征 :
 有一个或多个基例是不需要再次递归的;
 所有的递归链都要以一个基例结尾


递归函数


 通过一个累计器循环计算阶乘
 阶乘的递归定义函数 :

夜光带你走进python开发 (二十九)**语言

 运行递归函数fact()计算阶乘:

夜光带你走进python开发 (二十九)**语言

 递归每次调用都会引起新函数的开始
 递归有本地值的副本,包括该值的参数
 阶乘递归函数中:每次函数调用中的相关n值在中途的递归链暂时存储,并在函数返回时使用。

 


 5!的递归调用过程图

夜光带你走进python开发 (二十九)**语言

 

示例程序:字符串反转


 Python列表有反转的内置方法
 方法1:字符串转换为字符列表,反转列表,列表转换回字符串
 方法2:递归


 此问题的IPO模式:
 输入:字符串
 处理:用递归的方法反转字符串
 输出:反转后的字符串
 基本思想:把字符串看做递归对象


 将字符串分割成首字符和剩余子字符串
 反转了剩余部分后把首字符放到末尾,整个字符串反转就完成了
 字符串反转算法(常犯错误版) :

夜光带你走进python开发 (二十九)**语言

 此算法运行结果出错 :

夜光带你走进python开发 (二十九)**语言

夜光带你走进python开发 (二十九)**语言

 构造递归函数,需要基例
 基例不进行递归,否则递归就会无限循环执行
 Python在900余次调用之后,到达默认的“递归深度的最大值”,终止调用
此递归调用以字符串形式执行,应设置基例为空串


 正确的字符串反转代码(新版):

夜光带你走进python开发 (二十九)**语言

 运行结果:

夜光带你走进python开发 (二十九)**语言

 

 

相关文章:

  • 2021-04-20
  • 2021-10-03
  • 2021-09-26
  • 2021-08-28
  • 2021-07-30
  • 2021-05-07
  • 2021-12-28
  • 2022-01-01
猜你喜欢
  • 2021-04-24
  • 2021-10-23
  • 2021-06-27
  • 2021-10-30
  • 2021-11-05
  • 2021-10-02
  • 2021-11-03
相关资源
相似解决方案