Python3基础——递归

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3基础——递归相关的知识,希望对你有一定的参考价值。

递归函数

如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。python3默

认递归的深度是100,如果想要更改递归深度,可以导入sys模块,设置递归深度最大值。

import sys

sys.setrecursionlimit(1000)

递归的使用:

 1、求阶乘

n! = 1 x 2 x 3 x ... x n

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
>>> fact(5)
120

2、汉诺塔

请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:

技术分享

 

3、斐波那契数列

Fibonacci数列为:0、1、1、2、3、5、8、13、21......

数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。

用递归的方法来定义:

  • F(0) = 0 
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2) , n>=2

技术分享

 

以上是关于Python3基础——递归的主要内容,如果未能解决你的问题,请参考以下文章

Python3基础 用 函数递归求解 一个数字的阶乘

python基础-内置函数-作用域-闭包-递归-python3

Java基础之方法的调用重载以及简单的递归

学习笔记:python3,代码片段(2017)

Java基础入门五)之方法以及递归算法

Java 基础语法方法的使用