网络编程
位置:首页>> 网络编程>> Python编程>> python递归函数求n的阶乘,优缺点及递归次数设置方式

python递归函数求n的阶乘,优缺点及递归次数设置方式

作者:浩-先生  发布时间:2022-12-08 16:17:08 

标签:python,递归,阶乘

递归函数两大特点:

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的阶乘,优缺点及递归次数设置方式

来源:https://blog.csdn.net/qq_42845260/article/details/82357198

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com