Python学习笔记(11)递归

1、递归在编程上的形式是如何表现的吗?

在编程上,递归表现为函数调用本身这么一个行为 举个例子(递归求阶乘)

def factorial(n):
    if n==1:
        return 1
    else:
        return n*factorial(n-1)

num=int(input("请输入一个正整数:"))
result=factorial(num)

print("%d的阶乘是:%d"%(num,result))

2、递归必须满足的两个条件是什么?

  1. 函数调用自身
  2. 设置了正确的返回条件

3、按照递归的特性,有没有不得不使用递归的情况?

例如汉诺塔,目录索引(因为你永远不知道这个目录里是否还有目录),快速排序(二十世纪十大算法之一),树结构的定义等如果使用递归,会事半功倍,否则会导致程序无法实现或者难以理解。

4、用递归去计算阶乘或者裴波那契数列是很糟糕的算法,你知道为什么吗?

每次函数的调用都需要进行压线、弹线、保存和恢复寄存器的栈操作。而且递归如果忘了返回,会变成一个无底洞

5、简述递归的优缺点

优点:

  1. 递归的基本思想是把规模大的问题转变成规模小的问题组合,从而简化问题的解决难度(如汉诺塔游戏)
  2. 有些问题使用递归会使代码变得简洁易懂 1

缺点

  1. 递归函数的特性,会消耗大量的空间和时间;
  2. 如果忘记返回,会编程无底洞。

6、使用递归写一个power()函数模拟内建函数pow(),即power(x,y)是计算x的y次幂的值

def power(x,y):
    if y==0:
        return 1
    else:
        return x*power(x,y-1)
res=power(3,0)
print(res)

往期笔记

Python学习笔记(1)

Python学习笔记(2)

Python学习笔记(3)

Python学习笔记(4)

Python学习笔记(5)

Python学习笔记(6)

Python学习笔记(7)

Python学习笔记(8)

Python学习笔记(9)

Python学习笔记(10)

本文分享自微信公众号 - 软件测试经验与教训(udatest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python读书笔记

python 数据分析基础 day15-pandas数据框的使用获取方式1:使用DataFrame.loc[]获取方式2:使用DataFrame.iloc[]

今天是读《pyhton数据分析基础》的第15天,今天读书笔记的内容为使用pandas模块的数据框类型。 数据框(DataFrame)类型其实就是带标题的列表。...

481110
来自专栏python读书笔记

python 数据分析基础 day2-数值及字符串数值字符串

今天说一下python 的内置的数据类型以及相应的操作方法 数值 数值类型主要有整数(int)、浮点数(flooat)、长整数(long)、复数(complex...

347100
来自专栏python读书笔记

python 数据分析基础 day8-pandas读写多个excel文件

今天是读《python数据分析基础》的第8天,今天的读书笔记的内容为利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表。 大致原...

54660
来自专栏python读书笔记

python 数据分析基础 day3-list类型简介建立副本列表元素的获取list的操作方法

今天说一下python的list类型。 简介 list类型是一个可变对象,即对其内容进行修改,其内存地址不会发生改变。 list对象中的元素很灵活,可以是数值...

32870
来自专栏python读书笔记

python 数据分析基础 day11-mysql安装

今天是读《python数据分析基础》的第10天,今天的笔记内容是安装mysql数据库。 mysql数据库是一个关系型数据库,分为社区版(免费)以及专业版(收费...

38690
来自专栏python读书笔记

python 数据分析基础 day5-读写csv文件基础python读写csv文件通过pandas模块读写csv文件通过csv模块读写csv文件

今天说一下使用python读写csv文件。 读写csv文件可以使用基础python实现,或者使用csv模块、pandas模块实现。 基础python读写csv...

51960
来自专栏python读书笔记

python 数据分析基础 day9-datetime类型常用对象以及函数日期类型的运算

今天是读《python数据分析基础》的第9天,今天将通过python的date模块来总结日期类型。 常用对象以及函数 对象 可通过date模块创建创建以下对象:...

32860
来自专栏python读书笔记

python 数据分析基础 - 总结

至此,经过19天的阅读,《python数据分析基础》已经阅读完毕。 个人感觉,这是一本不错的关于数据分析方面的入门书籍。但是,这本书是有阅读门槛的,必须初步了...

36860
来自专栏python读书笔记

python 数据分析基础 day12-python调用mysqlmysqlcilent介绍创建数据表插入数据选取数据修改数据删除数据删除表

今天是读《python数据分析基础》的第11天,今天的读书笔记的内容为通过MysqlcCient模块来使用mysql数据库。 mysqlcilent介绍 mys...

36360
来自专栏python读书笔记

python数据分析基础day4-字典字典的定义字典创建字典元素的获取字典的排序

今天说一下重要的数据类型,字典。 字典的定义 python中字典类型就是键值对的集合,其中键在一个字典中必须是唯一的,值没有这个要求。此外,值可以是数值,字符串...

32670

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励