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对字典进行排序实例
Sep 25 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Python匿名函数及应用示例
Apr 09 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 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 cookie名使用点号(句号)会被转换
2014/10/23 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
浅谈五大Python Web框架
2017/03/20 Python
对python中return和print的一些理解
2017/08/18 Python
python中的json总结
2018/10/11 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
python中元组的用法整理
2020/06/15 Python
python识别验证码的思路及解决方案
2020/09/13 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
Android面试题及答案
2015/09/04 面试题
安全标准化汇报材料
2014/02/03 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
交流会主持词
2015/07/02 职场文书
升学宴祝酒词
2015/08/11 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB