你是否听过:
从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:……
要实现这段话,我们要运用递归
先定义一个名为say的函数并打印
def say():
print("从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:")
say()
到这里,它只能打印出一句话
递归:自己执行自己
所以要在函数内先执行自己
def say():
print("从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:")
say()
say()
运行后编译器会报错
是因为我们应要有一个出口来结束这个递归
若只说100次
a = 0
def say():
#将a设置为全局变量
global a
#将a每次加一
a += 1
if a > 100:
return
print("从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:")
say()
say()
这样就可以打印100次而不报错
运用递归画彩圈
我们要用到random和turtle库
import random
import turtle
pen = turtle.Turtle()
pen.speed(0)
turtle.colormode(255)
radius = 50#半径
def circle():
global radius
if radius > 200 :
return
radius += 1
pen.pencolor(random.randint(0,255),random.randint(0,255),random.randint(0,255))
pen.circle(radius)
pen.left(2)
circle()
circle()
第二种
import random
import turtle
pen = turtle.Turtle()
pen.speed(0)
turtle.colormode(255)
def circle(radius):
if radius > 200 :
return
pen.pencolor(random.randint(0,255),random.randint(0,255),random.randint(0,255))
pen.circle(radius)
pen.left(2)
circle(radius + 1)
circle(50)