python递归函数求n的阶乘,优缺点及递归次数设置方式


Posted in Python onApril 02, 2020

递归函数两大特点:

1.能够调用函数自身

2.至少有一个出口(结束函数自身调用)

函数实现:

def calnum(num):
  if num != 1:
    # 递归调用自身函数
    csum = num * calnum(num - 1)
  else:
    # 设置递归出口
    csum = 1

  return csum

ret = calnum(5)
print(ret)

递归函数的缺点:

占用资源多,一般不会优先选择。

一个程序中python默认只允许调用自身1024次,超过这个次数,

python解释器会认为该程序执行有错误而报错停止

报错信息:

RuntimeError: maximum recursion depth exceeded

当然python是支持自定义次数的:

import sys
# 设置允许的调用次数为2000
sys.setrecursionlimit(2000)

补充知识:python:编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数

题目:

编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数,输出如下图形。例如:当n=6时。

0
          0  1  1
        0  1  1  2  3
      0  1  1  2  3  5  8
    0  1  1  2  3  5  8 13 21
  0  1  1  2  3  5  8 13 21 34 55

规律:

1.每行第一个数为0;

2.第n行数的个数为2n-1;

3.第n行第m列数为第n行中第m-1列和m-2列数之和;

代码:

def fei(i,j): #i为行数,j为列数
  if i == 1 or j ==1:
    return 0
  elif j == 2 :
    return 1
  else:
    return fei(i,j-1) + fei(i,j-2)
 
for i in range(1,7):
  print()
  for k in range(1,7-i): #控制空格数
    print(" ",end="")
  for j in range(1,(2*i)): 
    print(fei(i,j),"",end="")

运行结果:

python递归函数求n的阶乘,优缺点及递归次数设置方式

以上这篇python递归函数求n的阶乘,优缺点及递归次数设置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
Python可以实现栈的结构吗
May 27 Python
Django之腾讯云短信的实现
Jun 12 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
Python识别验证码的实现示例
Sep 30 Python
Python几种酷炫的进度条的方式
Apr 11 Python
Python日志模块logging用法
Jun 05 Python
PyTorch中的C++扩展实现
Apr 02 #Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 #Python
Python运行提示缺少模块问题解决方案
Apr 02 #Python
Pycharm配置PyQt5环境的教程
Apr 02 #Python
Python无头爬虫下载文件的实现
Apr 02 #Python
linux 下selenium chrome使用详解
Apr 02 #Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 #Python
You might like
用在PHP里的JS打印函数
2006/10/09 PHP
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
理解Python中的With语句
2015/02/02 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
简单谈谈python中的语句和语法
2017/08/10 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python生成密码字典的方法
2018/07/06 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python django中8000端口被占用的解决
2019/12/17 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
竞聘书怎么写,如何写?
2014/03/31 职场文书
社区志愿者活动方案
2014/08/18 职场文书
学习型党组织心得体会
2014/09/12 职场文书
八年级物理教学反思
2016/02/19 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA