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线程池的实现实例
Nov 18 Python
python中的多重继承实例讲解
Sep 28 Python
python使用tornado实现登录和登出
Jul 28 Python
举例讲解Python常用模块
Mar 08 Python
Python求离散序列导数的示例
Jul 10 Python
python实现按首字母分类查找功能
Oct 31 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
pytorch实现手写数字图片识别
May 20 Python
python元组打包和解包过程详解
Aug 02 Python
Python读写yaml文件
Mar 20 Python
python3 字符串str和bytes相互转换
Mar 23 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 flock 文件锁详细介绍
2012/12/29 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
es6数值的扩展方法
2019/03/11 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
如何在python中执行另一个py文件
2020/04/30 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
导游实习生自荐书
2014/01/28 职场文书
英语老师推荐信
2014/02/26 职场文书
小班评语大全
2014/05/04 职场文书
通信工程专业求职信
2014/06/04 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python