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使用multiprocessing创建进程的方法
Jun 04 Python
用Python抢过年的火车票附源码
Dec 07 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
python实现傅里叶级数展开的实现
Jul 21 Python
详解python while 函数及while和for的区别
Sep 07 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
python适合做数据挖掘吗
Jun 16 Python
分享python函数常见关键字
Apr 26 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
vue使用element-ui实现表单验证
2020/12/13 Vue.js
python实现代码行数统计示例分享
2014/02/10 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
大三毕业自我鉴定
2014/01/15 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
学校重阳节活动总结
2015/03/24 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
外出学习心得体会范文
2016/01/18 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL