绘制雪花的程序是什么逻辑?请教递归!
scratch吧
全部回复
仅看楼主
level 1
书h呆h熊 楼主
2022年07月05日 15点07分 1
level 1
书h呆h熊 楼主
2022年07月05日 15点07分 2
level 1
书h呆h熊 楼主
请教大家一下,看程序的递归自己看不懂,然后就更写不出来了。
大家在scratch写程序做递归都是怎么建立思路的,然后转化成递归的形式的?
简单的首尾各一个粉色积木块的还能看懂,复杂点的是看不懂也想不到。
2022年07月05日 15点07分 3
吧务
level 15
如果看不懂一大堆积木,可以通过改参数看一看效果有什么不同,来试着想想这些积木的功能(比如重复执行3次显然是把雪花分成完全相同的三部分来处理;函数定义里的右转60度是在画钝角,左转120度是在画锐角)
然后把积木执行的顺序理清,头脑里想不明白的时候可以在纸上画一画。像这里n=4的时候,遇到第一个如果否则,返回否,执行n=2;在n=2里又遇到第一个如果否则,返回否,执行n=1;在n=1里所有的如果否则都返回是,全部执行一遍,回到n=2的下一个积木:右转60度,然后遇到第二个如果否则,返回否,执行n=1…
遇到问题没有思路的话就先试着把问题拆分,简化为多个小问题。比如画科赫雪花可以看作每多一层,每边上就会多一个“画边,转60度,画边,转120度,画边,转60度,画边”,而原本的边与边之间的角度不变。因此可以想到,每层都需要固定执行“画边,转60度,画边,转120度,画边,转60度,画边”,在画边时要进入下一层递归,直到到达最底层,这时候再移动几步画出边来。
递归本身就不好理解,多分析几个例子就好了
另外给你这个随便改了改,让雪花大小不变(为什么不直接num-1而要num/2呢)
2022年07月05日 16点07分 4
感谢多次的回答!回答的很细致,象老师似的!递归这块,套的层越多就越理解不来,所以有时候就拿小一点的参数,来比对在纸上画画,这样下在层数少的,还能琢磨的了。
2022年07月08日 15点07分
要是递归的层数多了,或是一个递归函数里面嵌套了好多层,然后好多层下面还有递归,脑子就感觉不够用似的,画雪花这个画法能想通,但是转化成程序就想不到了,而且一用递归就更糟糕了。
2022年07月08日 15点07分
要是嵌套层数多了,返回的值多了,就更蒙了,不知道怎么返回了。
2022年07月08日 16点07分
买了几本书,平时有时间就会看看。但是没系统学过。不过看人家写的程序确实有收获。老师修改的这个雪花程序,移动多少步这块,我看着有点晕,数学这块都忘了。[汗]
2022年07月08日 16点07分
level 12
画雪花这思路不错的,大佬[真棒]
2022年07月08日 14点07分 5
我这是看书上写的,抄下来的,楼上的才是大佬.
2022年07月08日 16点07分
1