大家好,我是白菜胡萝丸子
人生苦短,Python当歌
项目导入
版本6.0:使用递归函数实现重复五角星的绘制
项目分析—理清思路
- 分析问题:分析问题的计算部分
- 明确问题:划分问题的输入、处理和输出部分(IPO)
- 设计算法:计算部分的核心
知识点学习–万丈高楼平地起
递归函数
函数定义中调用函数自身的方式称为递归
能够非常简洁地解决重要问题
每次函数调用时,函数参数会临时存储,相互没有影响达到终止条件时,各函数逐层结束运算,返回计算结果要注意终止条件的构建,否则递归无法正常返回结果
def digui (num) #定义递归函数
print(num) #输出当前教字
if num>0: #判断当前数字是否>0
digui(nun-1) #调用函数本身
else:
print('----')
print (num) #再次输出当前数字
digui(3)
#运行过程
digui (3)
print (3)
if 3>0:
digui (2): #调用函数本身
print(2)
if 2>0
digui(1) #调用函数木身
print (1)
if 1>0
digui (0): #调用函数本身
print (0)
if 0>0:
digui(num-1) #调用函数本身
else :
print ('---')
print (0)
print(1)
print (2)
print (3)
递归优缺点
优点:
递归使代码看起来更加整洁、优雅
可以用递归将复杂任务分解成更简单的子问题使用递归比使用一些嵌套迭代更容易
缺点:
递归的逻辑很难调试、跟进
递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本6.0:使用递归函数实现重复五角星的绘制
"""
import turtle
def pentagram(side_length):
i = 0
while i < 5:
turtle.forward(side_length)
turtle.right(144)
i = i + 1
side_length = side_length + 100
if side_length <= 500:
pentagram(side_length)
def main():
turtle.speed(10)
side = 100
pentagram(side)
turtle.exitonclick()
if __name__ == "__main__":
main()
执行结果
更上一层楼–让程序进化一点点
除了turtle小海龟进行绘制图形外,Python还有没有其它其他方法或库进行图形绘制? Canvas控件