我们在正经人谁用递归呀一节中,简单的讨论了python中的递归

相信用过python递归的朋友可能都碰到过:

RecursionError: maximum recursion depth exceeded while getting the str of an object,

显而易见超过递归深度了,那么python的递归深度到底是多少呢?

递归的理论深度

在计算机系统上根据计算机性能,是有默认递归深度的,根据机器性能不同可能会有一个不同递归深度。

但是,python告诉我的是默认递归深度是1000(我这里说的是默认深度,那些手动修改过的勿喷)

import sys
sys.getrecursionlimit()
# 可以通过上述代码

具体以图为证:

那么问题来了真的是1000吗?

递归的实际深度

这里以斐波那契函数为例进行实测:

def fib(n):
if n <= 2:
return 1
else:
return fib(n - 1) + fib(n - 2)

本地实测结果:

疑问又来了,递归的上限可以调整吗?调整后上限又是多少?

递归上限调整

import sys
sys.setrecursionlimit(设置上限值) # 使用上述代码就可以调整;
# 我们调整到3000,验证一下:
# 为了以示清白设置生效后上图:

可以看到已经生效,下面开始验证:

递归的最大深度

理论上递归的深度是可以上万的。由于我的机器比较渣,这里就不测试了(狗头保命),感兴趣的朋友可以自己尝试一下

最新文章

  1. 20145212&amp;20145204信息安全系统实验四报告
  2. UWP学习记录12-应用到应用的通信
  3. JSP里面ajax不能返回后台传出的值得问题。。。。
  4. linux---mysql安装
  5. java单列设计模式 小记
  6. JVM内存模型和关键参数设置
  7. POJ 1017
  8. PHP startsWith and endsWith
  9. (转)织梦DedeCMSv5.7安装体验数据包的方法
  10. Lucene.Net 2.3.1开发介绍 —— 三、索引(三)
  11. c++的输入和输出流
  12. redis安装-单机版
  13. php审核操作
  14. Hibernate基础学习(七)&mdash;检索方式
  15. Java多线程由易到难
  16. ZYNQ原理图中添加RTL设计模块
  17. Android远程桌面助手(Build 0787)
  18. jS处理中英文时间格式化问题
  19. PDO访问Mysql数据库
  20. 快速部署私人git服务--基于docker化Gogs

热门文章

  1. HDFS中的NameNode名节点——FSimage
  2. Spring IoC - 循环依赖
  3. 后端程序员之路 3、fastcgi、fastcgi++
  4. Snort + Barbyard2 + Snorby环境搭建
  5. 基于OpenSSL的PKI的PKI数字证书系统实现
  6. Spring Boot 2.x基础教程:使用MongoDB
  7. POJ-3080(KMP+多个字符串的最长公共子串)
  8. 【海思】Hi3516A 运行sample_venc的demo内核奔溃(DDR问题)
  9. 使用代码生成工具快速开发ABP框架项目
  10. key解析