递归函数是在函数内部调用自己的函数。递归函数通常有两个部分:基本情况和递归情况。
基本情况是递归函数停止递归的条件,当满足基本情况时,递归函数将不再递归调用自己,而是返回结果。
递归情况是递归函数继续调用自己的条件,当满足递归情况时,递归函数将再次调用自己,并且会通过传递给自己的参数来逐步解决问题,直到满足基本情况。
递归函数的实现要考虑以下几点:
- 定义基本情况,即递归函数停止递归的条件。
 - 确保每次递归调用中,问题的规模都减小了(通常通过传递给自己的参数来实现)。
 - 确保递归函数在递归调用时能够接收并处理上一次递归调用的结果。
 
下面是一个示例,展示如何使用递归函数计算一个数的阶乘:
def factorial(n):
    # 基本情况:n为0或1时,阶乘为1
    if n == 0 or n == 1:
        return 1
    # 递归情况:调用自身计算n-1的阶乘,并乘以n
    else:
        return n * factorial(n-1)
# 测试
print(factorial(5))  # 输出120
 
在上面的示例中,当n为0或1时,递归函数会直接返回1,这是基本情况。当n大于1时,递归函数会调用自己来计算n-1的阶乘,并将结果与n相乘,这是递归情况。
下面这段代码是用递归函数来画五角星
import turtle
def draw_pentagram(size):
    #绘制五角星
    count = 1
    while count <= 5:
        turtle.pencolor("red")
        turtle.forward(size)
        turtle.right(144)
        count = count + 1
def draw_recursive_pentagram(size):
    #绘制五角星
    count = 1
    while count <= 5:
        turtle.pencolor("red")
        turtle.forward(size)
        turtle.right(144)
        count = count + 1
    #五角星绘制完成,更新参数
    size += 10
    if size <= 300:
        draw_recursive_pentagram(size)
def main():
    turtle.penup()
    turtle.backward(200)
    turtle.pendown()
    turtle.pensize(2)
    size = 50
    draw_recursive_pentagram(size)
    # while size <= 100:
    #     draw_pentagram(size)
    #     size = size+10
    turtle.exitonclick()
if __name__ == '__main__':
    main() 
结果:



















