python如何理解递归函数
a) 引言:在一个函数中自己调用自己会怎么样呢?会陷入无限的调用循环。为了解决该问题就需要使用递归。
b) 应用:
i. 案例分析:编写一个函数,该函数接收一个整数n,然后计算输出n的阶乘。
1. 首先定义一个一个函数def factorial(n),该函数应该怎么实现呢?我们知道计算n的阶乘有如下规律:n!=n*[(n-1)*[n-2]…*1]=n*(n-1)!
2. 函数实现步骤可以是
def factorial(n):
1.计算(n-1)的阶乘
2.返回step1的结果值*n
要完成1步的事情,就是要计算(n-1)!。由于我们这个函数是计算n!,因此1步也可以理解为,以n-1为参数,调用factorial函数。代码就会变成:
def factorial(n):
1.factorial(n-1)
2.返回step1的结果值*n
在该代码中,出现了在factorial函数中调用factorial函数的情况。出现了函数的递归。为了完善上述代码,可以将代码中的第二部也翻译成代码:
def factorial(n):
1. int result=factorial(n-1)
2. return result*n
但是问题也出现了,加入n=3,在fac(3)的内部会调用fac(2),在fac(2)中会调用fac(1),在fac(1)中会调用fac(0)-》fac(-1)……因此我们需要规定一个循环调用结束的条件。在当前程序中当参数n的值为1时,则计算1的阶乘,到这一步就没有必要继续递归下去的必要了,因此n=1是,应当直接返回。
def factorial(n):
if(n==1):
return 1
int result=factorial(n-1)
return result*n
中公优就业python培训课程还有严格、科学、负责的教学就业管理制度,班主任、职业规划师全程跟班,把握每位学员的学习状态,并有专业的职业素养课和就业指导课,确保教学及就业质量。通过以上python知识分享,想必大家对于python知识都有一定了解,如果你还更多疑问,欢迎你在线长春python培训班,我们会专业老师为解答。