首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对称与魔术初步(一)——美丽的对称

在前面《循环、递归与魔术(一)——递归与循环的数理逻辑》系列中,我们曾介绍过递归与循环的逻辑结构以及他们在魔术中的应用。...图2 泰姬陵远景 我常说,人类的大脑天然对循环,递归和对称这种服从某种规律的对象感到舒服和满足,也可能是进化教会我们的,三庭五眼总比歪瓜裂枣要来的美,也更有更好的能力繁殖后代。...我们先回顾一下三者的基本数学描述: 循环:f(x + T) = f(x),T为周期,故也可以叫周期性。 递归:f(x) = g(f(x - 1)),总体总是能化为更小的自己来解决。...在这个意义下,前面所说循环,或者周期性,就是指的+T操作的不变性了(函数图像的平移,图案的平移,切牌等等),递归则是值的规模变化的时候结构的不变性,排列去掉一个元素依然是排列,集合少了一个元素,也依然是集合...图5 甲烷的空间结构 除了上面这些硬核的对称对象,以几何对称为代表的的美学对称性在生活中更是随处可见,我们人脸以对称为美,你和物理镜子里的你一起构成轴对称dui对象,还有各种地砖,墙纸图案带来的对称美感

42130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    循环、递归与魔术(二)——循环的魔术逻辑浅析与欣赏

    相关回顾: 循环、递归与魔术(一)——递归与循环的数理逻辑 上期在谈到递归与循环的程序逻辑时,循环遍历树的代码换行出现了换行错乱,这里再贴一遍: BFSTree(Tree tree) { vector...就像上一讲中提到的那些艺术画,建筑元素一样,循环与递归的基本元素肯定是能够造就美感的。这种相似性的结构无论从直观上还是深层地构造一个艺术概念上都是绝佳的元素。但是要应用的话,也绝不是生搬硬套。...今天这一篇我们来着重分析循环结构在魔术中的应用,重点看其基本逻辑在魔术等艺术形式中的变形与升华。后面我们继续深入分析循环的更多应用,然后进入递归结构继续。...观众此时会从不信任变成完全沉醉在这一场梦幻的表演中。因为,相比较于去猜,还不如趁着这机会一起做个美妙的白日梦呢!...而魔术里面用循环来强化概念,也要避免无聊。所以仔细看你会发现,每一次升降的内容都不一样:顶到底,底到顶,中间到顶,全部一起底到顶。 这种方式我们在文学作品里叫做同而不犯。

    75020

    美丽的数据——数据可视化与信息可视化浅谈

    信息可视化,旨在把数据资料以视觉化的方式表现出。信息可视化是一种将数据与设计结合起来的图片,有利于个人或组织简短有效地向受众传播信息的数据表现形式。...(确保任何呈现都是准确的,比如,上图气泡图的面积大小应该跟数值一样。) 8.不要过分设计 ? (清楚标明各个图形表示的数据,避免用与主要数据不相关的颜色,形状干扰视觉。) 9....上图的第一张没有属于同类型手机中不同系统进行颜色上的归类,从而减少了比较的作用。下图就通过蓝色系很好的把iPhone,Android,WP版归为一类,很好的与iPad版,其他比较。)...信息可视化案例 信息可视化囊括了数据可视化,信息图形,知识可视化,科学可视化,以及视觉设计方面的所有发展与进步。下面是信息可视化的案例分享。 ?...可视化的强大的普适性能够使用户快速应用某种可视化技术在一些新的数据上,并且通过可视化结果图像理解新数据,与针对已知特定数据进行信息可视化设计绘制相比,用户更像是通过对数据进行可视化的应用来学习和挖掘数据

    1.6K110

    循环、递归与魔术(一)——递归与循环的数理逻辑

    ” 循环和递归本是程序设计中常见的两种代码结构,其中循环对应的数学描述为迭代,递归即为嵌套自身。而二者共同的特性在于必须存在一种跳出机制:循环必有break,而递归必有对最简单情况的直接求解的返回。...不信你看下图: 图1/2/3 泰姬陵建筑上的循环,递归与对称 图4 分形之谢尔宾斯基(Sierpinski)三角形 我们的大脑天然对这种有一定规律的东西感到可以掌控和舒适。...我们首先看一下基本定义: 循环:循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按照条件循环。 递归:程序调用自身的编程技巧称为递归,必须包括自调用和跳出条件。...我想,它用展开的一列扑克牌来表达其意思应该再合适不过了: 图6 扑克牌序列与循环 而递归其实是一种参数化简,形式不变的一种化归思想。...最后举一个例子,比如遍历一棵树,而树的定义就是一种递归定义的: 有一个根节点,与若干节点有边相连或没有,其中每一个都是一棵树的根节点。 这在结构上和一个包子有好几个包子馅或者没有是一样的。

    1.4K21

    你的每一次外卖都是与深度学习的美丽邂逅

    点评,像经典的以信息平台的方式给用户提供信息决策的大众点评。 预订,美团在做的点餐相关的很多业务。 事实上,外卖上的 O2O 线下场景及其业务模式,要远比上图所表达的要复杂。...接下来是运营化的特点,一个是内容形式的多元化,包括商家,餐饮的、非餐饮的,餐饮有很多套餐的组合;内容形态上能看到产品的形态,目前这一块还不明显。...在外卖的场景上,特征的维度更复杂,前面提到用户的特征这是最基本的,另外一块包括场景层面地点的特征,不同的建筑物类型,用户需求的不同,包括时间也涉及到配餐的特征,用户肯定倾向于配送比较快的结果。...另外一个就是商家的特征,最主要是商家提供的商品,采用直营的模式,每一个实体的饭店,包括饭店的质量和整体的转化能力,其中经营能力有很多的特征,还有商品的特征。...它的优点是速度很快,基本上是线性模型,我们用千亿级的特征,但是它的缺点在于因为它是线性的,所以非线性的能力是比较弱的。但是实际的场景里面不是简单的线性化,而是非线性化,甚至更复杂的构成。

    754110

    C# foreach循环较for循环的优势与劣势

    一、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候...val = { 1, 2, 3 }; ArrayList list = new ArrayList(); list.AddRange(val); foreach (int item in list)//在循环语句中指定当前正在循环的元素的类型...6、当集合元素如List等在使用foreach进行循环时,每循环完一个元素,就会释放对应的资源,代码如下: using (IEnumerator enumerator = collection.GetEnumerator...while (enumerator.MoveNext()) { this.Add(enumerator.Current); } } 二、foreach循环的劣势...1、上面说了foreach循环的时候会释放使用完的资源,所以会造成额外的gc开销,所以使用的时候,请酌情考虑 2、foreach也称为只读循环,所以再循环数组/集合的时候,无法对数组/集合进行修改。

    2.6K80

    递归与循环的效率迷思

    本文简单比较了一下相同逻辑下,递归实现和循环实现的效率差异 已经不记得最初是从哪里获取的信息了,自己总有一个印象是递归的效率比循环差,因为递归有很大的函数调用开销,再加上递归可能存在的堆栈溢出问题...64% 左右了 ~ 试验到现在,似乎都印证了我之前的印象: 递归比循环慢,写代码就要写循环~ 我们最后来看个真实的(也更复杂的)示例:查找指定名字的子节点(假设我们有一颗树形结构的节点树,给出根节点,...,似乎我们应该将之前的递归代码改写为这种循环形式,但是 Profile 之后发现,其实循环版本还略慢于递归版本,原因就在于(模拟)调用栈的引入抵消了(甚至超过了)函数调用的开销....C++ 中实现的循环版本还要显著慢于其递归版本....还有一个问题之前没有提及,就是代码可读性问题,从我个人经验来讲,递归代码的可读性大体上还是要优于循环代码的.

    1.4K20

    Python的if判断与while循环

    缩进——推荐四个空格 (使用2个、3个空格或者tab都是可以得) 不要tab与空格混用 不同软件对空格的显示逻辑总是一样的,但是对于tab却五花八门。 有的软件把Tab展开成空格,有的不会展开。...例子(输出三个数中的最大数与最小数): 代码1 num1 = input("Num1:") num2 = input("Num2:") num3 = input("Num3:") if num1 >...Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。...while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立。...可在while语句后面加上else语句,else 中的语句会在循环正常执行完(即 while 不是通过 break 跳出而中断的)的情况下执行。 三段使用while语句猜年龄的代码。

    1.6K70

    Python中的循环与跳出

    Python中的循环与跳出 --start-- for循环: 1 for i in range(3): 2 user_input = input("Your username:") 3...run_forever = False 9 #break 10 time.sleep(10) 1.通过把run_forerver由True变为False,使得while循环的判断条件不成立...除了break之外还有一个continue也可以跳出循环。 break负责跳出整个循环,而continue是跳出本次循环,继续下一次循环。...但是break只能跳出一层循环,如果程序中有两个循环,第二个循环嵌套在第一个循环中,如果第二个循环被break,那么第一个循环会继续执行。Python不支持一次跳出多个循环。...我们可以通过在父循环中设定一个跳出标志,子循环通过更改这个跳出标志来跳出多个循环。 ? ####用continue 跳出当前循环,进入下个循环。

    1.7K20

    iterator 遍历与for循环与foreach的优劣对比

    []) iter.next();     } 瞬间感觉比起自己的for循环语句高端大气了不少,但此刻又有疑问,到底这两种那种比较好 先拿出for循环来对比 for(int i=0;i <list.size...();i++){  objects = (Object[])list.get(i);  }  经过查询,查到了很多,现在来分享一下 一方面从简洁程度和可复用的角度,迭代器的方法必然比较轻松...,比如当前list的组织结构变化,不能用get()函数获取,则需要重新更改for循环代码,而迭代器不用,故这是开发爱好者比较喜欢的一种代码方式 至于效率方面,找到了一位大神的测试分析http://bbs.csdn.net...,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。...相对老的for语句来说是个很好的补充。提倡能用foreach的地方就不要再用for了。在用到对集合或者数组索引的情况下,foreach显得力不从心,这个时候是用for语句的时候了。

    24740

    C语言中的分支与循环

    嵌套的if: if else 语句中,else可以与另外一个if语句连用,构成多重判断。...表达式3:用于循环变量的调整 例子:在屏幕上输出1到5 和while的对比:两者在循环过程中都有初始化,判断,调整这三部分,但是for循环的三个部分都非常集中,便于代码的维护,而如果代码较多的时候while...break的作用是永久终止循环,只要break被执行,直接就会跳出循环,继续往后执行。 continue的作用是跳过本次循环continue后面的代码,在for循环和while循环中有所差异。...for循环中的break和continue: break举例: 和while循环一样,for循环中的break也是用于终止循环的,不管循环还要执行多少次,只要执行了break语句,循环将彻底终止,将不再执行...举例: 所以在for循环中continue的作用跳出本次循环中continue后的代码,直到循环的调整部分。未来当某个条件发生的时候,就可以使用continue来实现。

    9410

    c语言中的分支与循环

    他会将表达式的值与每一个case的值进行比较,如果匹配的话,则会执行相应的代码块。如果没有匹配的case,可以选择使用default来执行默认的代码块。...###二.循环语句: 循环语句用于执行一段重复的代码,直到满足某个条件是其终止时才会中断;接下来,我们来具体介绍一下三种循环语句: 1.for循环:for语句的使用是用一个初始化部分,条件判断,调整部分构成...且for的括号内部是用;而非,。 2.while循环:while语句使用一个条件来控制循环的执行。它首先会检查条件是否为真,如果为真的话便会执行循环体;然后再次检查,直到不满足为止。...3.do...while语句循环:这个类似于while语句的作用,但它会先执行一次循环体,然后在后面在进行条件的检查,无论条件为真还是假,他都先会至少执行一次循环体;如果后面的限制与之匹配还会一直执行,...这便是简单的对分支循环语句的简单j介绍了!!!

    5100

    Linux的shell命令——判断与循环

    shell判断 判断分别有if与case两种。 if判断 在Linux系统的Shell中,if 是用于条件判断的关键字,用于根据给定条件执行不同的代码块。...通过合理使用 case 语句,可以根据不同的条件执行相应的代码,提供更灵活的控制流程。 shell循环 循环分别有for与while循环。...initialization 是循环变量的初始值,condition 是循环继续的条件,increment 是每次循环后循环变量的增量。...在每次循环中,循环变量会被赋值为当前的数字,并执行循环体内的代码。...总结 本文将shell中判断语法与循环语法进行了完整的表述,但是又很多的关键词用法需要我们翻来覆去的练习才能彻底的掌握,这不是一朝一夕就能搞定的,建议先学一些算法基础,有了算法基础再去使用判断和循环就会很拿手了呢

    1.1K40

    房上的猫:while循环与do-while循环,debug的调试运用

    一.循环结构  1.循环不是无休止进行的,满足一定条件的时候循环才会继续,称为"循环条件",循环条件不满足的时候,循环退出  2.循环结构是反复进行相同的或类似的一系列操作,称为"循环操作" 二.while...步骤:   1.分析错误,设置断点    断点用来调试的时候确定程序停在某一行代码处,以便发现程序错误   2.启动调试,单步执行    设置好断点后,就可以单击"启动调试"按钮   3.F5与F6对比...1.语法: do{    //循环操作   }while(循环条件);   解析:和while循环不同,do-while循环以关键字do开头,然后是大括号括起来的循环操作,接着才是while关键字和紧随的小括号括起来的循环条件...1)分析循环条件和循环操作   (2)套用do-while语法写出代码   (3)检查循环能否退出 五.while与do-while循环结构  1.相同点:   都是循环结构,使用"while(循环条件...)"表示循环条件,使用大括号将循环操作括起来  2.不同点:   (1)语法不同    与while循环结构相比,do-while循环结构将while关键字和循环条件放在后面,而且前面多了关键字do,后面多了一个分号

    2.3K110

    关于C语言的分支与循环语句

    2.循环语句 (1).while循环 格式: while(表达式) 语句;//如果循环体想包含更多的语句,可以加上⼤括号 (2).for循环 for 循环是三种循环中使⽤最多的, for 循环的语法形式如下...: 1 for(表达式1; 表达式2; 表达式3) 语句; 表达式1 ⽤于循环变量的初始化 表达式2 ⽤于循环结束条件的判断 表达式3 ⽤于循环变量的调整  ...while循环和for循环的对⽐...• continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所 差异的。...while中的continue: continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接 到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话...for中的continue: for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调 整部分。

    13210
    领券