前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习笔记(11)递归

Python学习笔记(11)递归

作者头像
张树臣
发布2018-05-15 16:54:51
5820
发布2018-05-15 16:54:51
举报

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

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

代码语言:javascript
复制
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次幂的值

代码语言:javascript
复制
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)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试经验与教训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档