Python 递归讲解Python 递归讲解Python 递归讲解Python 递归讲解
  • 首页
  • 博客
  • 文件
  • 书签
  • 分析
  • 登录
Search
Generic filters

Python 递归讲解

Published by admin at 2022年3月16日
Categories
  • Python
Tags

定义

1. 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归特性

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

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

使用递归求阶乘 解析递归原理

# 求阶乘代码
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def test(n):
    if n == 1:
        return 1
    else:
        res = n*test(n-1)
        print "n:%s-----ret:%s"%(n, res)
    return res

print test(4)  # 24
'''
n:2-----ret:2
n:3-----ret:6
n:4-----ret:24
24
'''
# 递归步骤
'''
1、第一层:test(4) = 4*test(4-1)
2、第二层:test(3) = 3*test(3-1)
3、第三层:test(2) = 2*test(2-1)
4、第四层:test(1) = 1
'''
# 返回步骤
'''
注:上层调用的位置都是:res = n*test(n-1),所以返回上层后会接着这里向下执行知道return
5、n=1那么就会执行if代码块内的代码return 1此时第四层函数结束: ret = 1
6、第四层函数结束后会接着第三层调用的位置向下执行直到return:  ret = 1 * 2
7、第三层函数返回后会回到第二层调用位置return:                ret = 1 * 2 * 3
8、第二层函数返回后会回到第一层调用位置return:                 ret = 1 * 2 * 3 * 4
到达第一层调用位置后,没有上层的递归调用位置,此时函数才会正真返回。
'''

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Categories

  • 猫
  • Python
  • MySQL
  • Django
  • Html/CSS
  • JavaScript
  • Vue
  • RegExp
  • php
  • Practice
  • Virtualization
  • Linux
  • Windows
  • Android
  • NAS
  • Software
  • Hardware
  • Network
  • Router
  • Office
  • WordPress
  • SEO
  • English
  • Games
  • Recipes
  • living
  • Memorandum
  • Essays
  • 未分类

归档

©2015-2022 Alaica Blog support@alaica.com