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中使用HTMLParser解析HTML的教程
Apr 29 Python
python文件操作之目录遍历实例分析
May 20 Python
用tensorflow搭建CNN的方法
Mar 05 Python
用python处理图片实现图像中的像素访问
May 04 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
Python 画出来六维图
Jul 26 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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递归函数中使用return的注意事项
2014/01/17 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
小程序实现长按保存图片的方法
2019/12/31 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
简单介绍Python中的struct模块
2015/04/28 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
如何学习Python time模块
2020/06/03 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
天巡全球:Skyscanner Global
2017/06/20 全球购物
会计自我鉴定
2013/11/02 职场文书
表扬信格式
2014/01/12 职场文书
上班离岗检讨书
2014/01/27 职场文书
开除员工通知
2015/04/22 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android
Spring中bean集合注入的方法详解
2022/07/07 Java/Android