如果看不懂一大堆积木,可以通过改参数看一看效果有什么不同,来试着想想这些积木的功能(比如重复执行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呢)
