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中logging模块的用法实例
Sep 29 Python
Python IDLE入门简介
Dec 08 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python3.5装饰器典型案例分析
Apr 30 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
python 安装impala包步骤
Mar 28 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
Python利器openpyxl之操作excel表格
Apr 17 Python
python开发制作好看的时钟效果
May 02 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下常用正则表达式整理
2010/10/26 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JS的replace方法介绍
2012/10/20 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Python中字符编码简介、方法及使用建议
2015/01/08 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python类型转换的魔术方法详解
2020/12/23 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
教室布置标语
2014/06/26 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
欢迎词范文
2015/01/27 职场文书
教师学期个人总结
2015/02/11 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
PHP实现两种排课方式
2021/06/26 PHP