友情提示:380元/半年,儿童学编程,就上码丁实验室。
递归-加法
计时器也是考试内容之一。因此这里使用计时器,记录程序的运行时间。
开始的时候,将数字n设置为10,加总的得数为0,然后加总计算,10次。做完以后,显示时间。这里的加总计算是一个“自制积木”,就是Scratch中的函数。
自制积木-函数
这是递归的关键。函数很简单,只有一个输入参数“数字n”,然后判断如果数字n大于0,就加总到得数中。做完后,数字n减去1,然后再调用积木自身。这就构成了递归了。
第一次数字为10,加入到得数中,然后传递9到这个函数中,9也会被加入到结果中,依次类推,到1进入函数的时候,还是满足条件,还是会被加总到总数中。然后减掉1,即为零,不满足条件,后面的就不执行了。因此10+9+8+7+…+2+1 =55
递归-结果
结果为55,正确。
循环-加法
循环
这其实比递归要好理解多了。从1加到10,做10次,每次都将当前数加入到结果中,然后减去1,继续做。循环次数是固定的,所以很好理解。
运行结果也是55,和递归做出来的结果相同。
机器性能测试
大递归-机器性能测试
参数n设置为300万即可。设置成千万级的时候,Scratch编辑器已经被白屏了,无法继续执行了。三百万还行。循环的,来个几千万,也没问题,很轻松。大循环中,使用300万。
运行结果-性能差异
左边13秒是递归实现的。右边7秒是循环实现的。循环加总,三千万,花了75秒。三千万的递归,在这个i5,8GB内存的机器上,已经跑不出来结果了。
3000万的递归,已经把Scratch Desktop跑白屏了。可能是这个软件的问题,内存和CPU都没有被占用,就挂在某个地方了。
用递归旋转或改变角色大小
我要变变变这函数中,使用递归开始的时候面向上方0度,然后逐渐增加。180°为边界,大于180时,停止全部脚本,就不再转动了,否则就会继续转动。
判断题:运行结束后,小猫朝着180°?
转自公众号:
艾博特