python中函数递归VS循环

知识回顾:

1.作用域。区别全局变量与局部变量之间不同。

2.函数的嵌套定义。

3.解决问题的思路

  • 以前写过的For循环

举例:输出1-10所有的数字。

for i in range(1,11):

print(i)

视频内容

本节知识视频教程

以下开始文字讲解

一、函数递归的实现

函数是否可以做到类似于循环?

答案是肯定可以的。我们可以采用函数的递归算法。

什么是递归?

可以理解为在定义的函数内部调用函数自己,形成一个回路。既然形成了一个回路,那么必须要有一个退出的方式。而这种退出的方式一般都是采用条件判断来实现的。

下面我们举一个实际递归的例子

n=1

def digui(a):

print(a)

if(a>=10):

return

a+=1

digui(a)

digui(n)

根据以上实际的例子,我们总结出函数递归使用的注意点:

  1. 函数的自我调用。
  2. 一定要有退出条件。
  3. 尽可能少用递归,因为非常消耗内存。

出题:阶层的计算,计算10!的结果,采用函数递归的方式进行计算。

如果您没有碰到过阶层的概念,请试着对以下例子进行理解。举例:

0!=1

1!=1*1

2!=2*1

3!=3*2*1

4!=4*3*2*1

。。。

10!=10*9*8*…*2*1

(此题答案在本文最后公布)

二、总结强调

1.掌握递归的定义方法。

2.掌握递归的注意事项。

3.掌握递归与for循环的联系与区别。

本节代码:

#for循环举例
# for i in range(1,11):
#     print(i)
#利用函数递归来输出1-1000之间的数字

import sys #导入sys库
sys.setrecursionlimit(8000) #设置递归深度

n=1
def digui(a):
    print(a)
    if(a>=1000):
        return
    a+=1
    digui(a)

digui(n)

答案公布:

#定义一个计算阶层的回调函数
def jieceng(n):
    if(n==1):
        return 1
    else:
        return n*jieceng((n-1))

print(jieceng(10))

执行结果:

3628800

本文分享自微信公众号 - 编程创造城市(bcczcs)

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

原始发表时间:2019-07-31

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏sktj

python pyqt5 绘图QPixmap

import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui ...

44210
来自专栏明丰随笔

浅谈哈希表

哈希表是一种根据哈希键去寻找哈希值的数据映射结构。通过该结构找到哈希键映射的位置,再根据映射的位置去寻找存放哈希值的地方。

9320
来自专栏程序员的知识天地

有趣的Python:Python控制键盘鼠标

上面提到的子包都已被引入到pynput库中。要使用上面的子包,从pynput中引入即可。

18220
来自专栏sktj

python pyqt5 设置窗口背景

import sys from PyQt5.QtWidgets import QMainWindow, QApplication

88940
来自专栏VB小源码

Excel VBA批量插入图片批注

a = MsgBox("使用说明:请确认您的图片文件存在与此文件同一目录下的名称为pic的文件夹中。并选中需要要添加图片批注的单元格。")

32140
来自专栏程序猿声

干货 | 到底是什么算法,能让人们如此绝望?

今天的任务是去给山顶的人家化斋,在爬山算法的帮助下,终于顺利爬到了最高点!阿弥陀佛~~⬇⬇⬇

9820
来自专栏sktj

python pyqt5 弹出框传递数据

from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets impo...

30320
来自专栏finleyMa

Ansible 2 -- 6 playbook 管理

可以为playbook中的任务打tag标签,方便在ansible-playbook中设置只执行哪些被打上tag的任务或忽略被打上tag的任务。

16440
来自专栏sktj

python pyqt5 qss选择器

QDialog QPushButton 后代选择器 QDialog>QPushButton 第一代子

20340
来自专栏VB小源码

VBA EXCEL 转 TXT 文本文件

在日常工作中,我们很多时候都会用到TXT,XML,JSON等文件作为数据储存介质,方便我们导进系统,数据库等;今天开号第一天先来一个Excel转TXT文件文件,...

8210

扫码关注云+社区

领取腾讯云代金券

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