加载中…
个人资料
林老师的LOGO_PYTHON_C语言之家
林老师的LOGO_P
YTHON_C语言之家
  • 博客等级:
  • 博客积分:0
  • 博客访问:46,373
  • 关注人气:563
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

初赛必考递归题-与半圆有关的话题-答案A

(2022-07-23 10:04:53)
标签:

林老师

pclogo

mswlogo

logo博客

fmslogo

分类: WinXP~7~8~10运行Logo语言
初赛必考递归题-与半圆有关的话题-答案A
初赛必考递归题-与半圆有关的话题-答案A
      初赛的末道递归题像是一个“优秀人才筛选器”,凡能理解并能作出正确答案的未来大概率能够成为非常优秀的人才。在数学中,几何图形的思维深度要比小学的数学算术高出三个维度。数字50在算术中可以加减乘除,但是画一条长50的线段,其实里面还蕴藏着另外3个维度的数据:线段的起点坐标在哪里:SETXY,线段的指向是哪个角度:SETH。正因为如此,“几何”这门数学总要比其他的数学难一些。所以这道画半圆的LOGO作图题——里面还包含着递归运算,必须要有高超的空间想象能力才能理解之。现在先回顾一下A问题:
      ========================================
根据下列程序,画出或完善递归图形(A~B每题4分)8%
to halfball
   arc 180 50
   fd 50  bk 100  fd 50
end

to dg :x
  if :x=1 [stop]
  halfball
  fd 50  rt 90
  dg :x-1
  lt 90  bk 100  lt 90
  dg :x-1
  rt 90  fd 50   
end

A.画出执行 cs dg 3 命令的递归图形(大小比例相对准确,请用小三角形标出海龟起点位置)。
   请在答案卷相应位置上画出该递归图,并标出海龟位置    【A】   

         =======================================
      题目中有一个基础的画图零件“半圆”halfball :
初赛必考递归题-与半圆有关的话题-答案A
      这个 arc  180  50 画出的是180度半径50的圆弧。因为是180度,所以成为半圆。十分关键的是 arc 命令定义的是从海龟当前方向的 6:00 位置开始顺时针画圆弧。如果你不掌握这些要素,后面的一切就免谈了。
     接着的 fd  50  bk  100  fd 50 是画半圆的直径并回到原来的起点

      所以 halfball 是一个产生“半圆”的机器。

      后面的 dg 过程是一个二重中间递归。用一般的数学思维理解“二重中间递归”是极为困难的。近二十年前林老师发展出出“递归原理图”,可以直观地解释破解所有这一类递归图形形成的机理。所涉及的内容太多,想学LOGO编程的应潜下心来看懂林老师编著的教材中的以下章节:
   ********************************
《新编PCLogo教程》
       第三章《功能强大的递归》第二节《破解“二叉树”的奥秘》P115~
       第三节《无限自我相似的“分形”世界》~P143
   ********************************
《MSWLogo讲义Plus》
      第4章《理解递归运算》
      第5章《进入奇妙的分形世界》
   ********************************
      这些基本功课是躲不开的。如果你只是为了应付竞赛,这样的题目可以放弃掉,你将来就没有成为编程熟手、高手的可能。你还有通过竞争保送清北的机率吗。


to dg :x   ;画:X级半圆的递归
  if :x=1 [stop]
  halfball       ;所有的半圆都是这一行命令画的
  fd 50  rt 90   ;移动到B点并转向向右  关键!
  dg :x-1        ;画下一级半圆  上面的那一个
  lt 90  bk 100  lt 90  ;转回来从B移动到C并转向向左   关键!
  dg :x-1        ;画下一级半圆  下面的那一个
  rt 90  fd 50   ;这一步极为重要回归起始点 回归起始朝向
end
初赛必考递归题-与半圆有关的话题-答案A


初赛必考递归题-与半圆有关的话题-答案A
初赛必考递归题-与半圆有关的话题-答案A
      这个递归程序的奇特之处是递归停止条件 if  :X=1 [ stop ]。

      所以执行 dg 1 时不输出图形。

      执行 dg 2 时输出一个半圆。

初赛必考递归题-与半圆有关的话题-答案A

       执行 dg 3 时输出:

初赛必考递归题-与半圆有关的话题-答案A
      我们说这是 LOGO语言。中文不也是语言吗?
      能用中文来叙述上面题目给出的程序吗?当然可以!转述成中文是如下一段话:

      画一个朝左侧的带有直径的半圆。在满足递归的条件时,继续在前一级半圆的直径的两端,在垂直于直径的方向上朝外继续画下一级相同大小的半圆。

     这篇博客加上前面说到的《新编PCLogo教程》、《MSWLogo讲义Plus》的相关章节,才是这个题目的完整的解说。

      你听到过这样不遗漏一点点细节的讲课吗?你的老师是这样深入地剖析这道难题吗?

      哎呀呀!这个“半圆递归”还只是那么多张初赛试卷末道递归题中最简单的一道题!!!

      在编程语言中,REPEAT-FOR循环是高于四则运算的数学思维;递归是更高一级的思维。在PYTHON等新型编程语言中,Class类编程(即面向对象的编程)是再高一级的编程思维。有兴趣“步步高”般地学习编程新思维吗?!

 待续  更精彩的答案B……

初赛必考递归题-与半圆有关的话题-答案A

初赛必考递归题-与半圆有关的话题-答案A

初赛必考递归题-与半圆有关的话题-答案A

 LOGO编程画出的动画:
初赛必考递归题-与半圆有关的话题-答案A

                           

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有