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 文件重命名工具代码
Jul 26 Python
Python中for循环详解
Jan 17 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
python线程池如何使用
May 28 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python实现byte转integer
Jun 03 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
UCenter Home二次开发指南
2009/05/28 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python上传package到Pypi(代码简单)
2016/02/06 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python破解同事的压缩包密码
2020/10/14 Python
python 下载文件的多种方法汇总
2020/11/17 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
团员的自我评价
2013/12/01 职场文书
童装店创业计划书
2014/01/09 职场文书
办护照工作证明范本
2014/01/14 职场文书
协会周年庆活动方案
2014/08/26 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
2015中秋祝酒词
2015/08/12 职场文书
工商局调档介绍信
2015/10/22 职场文书
初三英语教学反思
2016/02/15 职场文书