今天我们在scratch中运用递归算法绘制图案。
递归绘图1递归绘图2知识普及:递归
递归(recursion),就是程序在运行的过程中调用自己。
递归做为一种算法在程序设计语言中广泛应用。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
构成递归需具备的条件:
1.子问题须与原始问题为同样的事,且更为简单;
2.不能无限制地调用本身,须有个出口,化简为非递归状况处理。
一、编辑脚本
1、自制新积木:选择代码区的“自制积木”,新建积木名设置为“图案边长”,并添加一个输入项,用来接收图案的边长数值;
自制积木2、新积木递归脚本:
(1)递归出口:设置递归结束条件,当边长大于时停止;
递归出口(2)循环:通过重复执行,改变画笔颜色,绘制不同边长的近似矩形,递归前将边长的值增加1;
绘图(3)递归调用:自制积木内部调用自制积木自己;
递归调用3、主程序脚本:
(1)角色初始化:隐藏默认的小猫角色;
角色隐藏(2)画笔初始化:画笔初始状态为清除所有,画笔的落笔位置在舞台中央,画笔粗细设为2;
画笔初始化(3)变量初始化:新建一个变量“边长”,初始化赋值为1;
新建变量变量初始化(4)调用自制积木:调用自制积木绘制图案;
调用自制积木二、完整脚本
脚本想一想,旋转角度如果设置成90度会是什么效果呢?