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使用xmlrpc实例讲解
Dec 17 Python
Python中time模块和datetime模块的用法示例
Feb 28 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
对Django url的几种使用方式详解
Aug 06 Python
Python二元赋值实用技巧解析
Oct 25 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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函数serialize()与unserialize()用法实例
2014/11/06 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
微信JS接口大全
2016/08/25 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
跟老齐学Python之集合的关系
2014/09/24 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python3计算三角形的面积代码
2017/12/18 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
pytorch forward两个参数实例
2020/01/17 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
校优秀毕业生主要事迹
2014/05/26 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
论群众路线学习笔记
2014/11/06 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
初中生活随笔
2015/08/15 职场文书
体育委员竞选稿
2015/11/21 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python