• 对比python学julia(第一章)(第四节)冰雹猜想


    4.1 依葫芦画瓢

      冰雹猜想是一种非常有趣的数字黑洞,曾让无数的数学爱好者为之痴迷。它有一个非常简单的变换规则,具体来说就是:任意取一个正整数n,如果n是偶数,就把n变成n/2;如果n是奇数,就把n变成3n+1。如此反复进行变换运算,最终一定会得到1,确切地说是落入4-2-1的循环之中。

      例如,对于整数3,按照冰雹猜想的规则进行运算,它的变换过程为:10,5,16,8,4,2经过7次操作,就把整数3变换为1

      原书中是用自然语言描述验证冰雹猜想的算法步骤,不够直观,这里我们用流程图来描述,便于理解:

      这个程序并不复杂,原书Python程序只有10几行。我把它翻成了julia程序,并且加上scratch(一种用于编程教育的可视化编程软件)程序一起进行对比,因为scratch能直观地看出算法逻辑。

    4.2 刨析程序结构

     

      我们再来仔细看看julia的冰雹猜想代码。麻雀虽小五脏俱全,虽然只有19行,但是包含了许多julia编程的基本元素。

      1. 注释

        2行是一个单行注释语句。单行注释以“#”号开头,后面可以是任何内容。注释是给人看的,程序在执行时会自动忽略掉注释。这和python是一样的。

      2. 变量、表达式和赋值操作

        从第3行可以看出,julia是通过赋值来定义变量的,这点和python相同,与其他强类型语言比如javac#不同。有意思的是第4行数组的赋值,在python中,数组是一个对象,apend方法作为对象的成员函数,通过对象后面的点号“.”来调用的。而julia,对象(类)是不能有成员函数的,所以apend作为独立函数使用。但是不用怀疑julia的面向对象特性,只不过它为了做了更为巧妙的设计,从而带来了性能上的提升。Julia是兼具面向对象和函数式的,这些我们后面再具体介绍。

      3. 流程控制

        5行是 while循环语句,当条件n!=1成立时,循环体(6~11)就会被反复执行。与python不同的是,while循环语句用end作为结尾。不同于python用缩进排版,julia里面,不强制要求缩进排版,函数、循环语句等程序块,基本都是以end结尾,学过Basic语言的同学应该感觉似曾相识。不过这样是不是有点累赘?在while循环体内,有一个条件判断语句if...else,也称选择结构。另外第7行的整除函数,请参考上一节的表格中的描述。

      4. 函数的定义和调用

    1行是函数定义,定义了一个名为bingbao的函数,参数是n。函数定义,pythondefjuliafunction,并且没有冒号(:),但是用end结尾。

      上面的julia代码有19行,如果在REPL环境里面书写很不方便,这时候集成开发环境就派上用场了,具体使用方法,下一节介绍,敬请期待。

     

  • 相关阅读:
    [导入]开源一个的Asp.net公共上传文件程序
    [导入]安装Nginx,最近在研究这个,鄙视用F5的
    [导入]Movable Type 的 Feed Widget 很牛,真的很牛!
    [导入]如果得了ls综合症怎么办?
    [导入]鼓泡泡的电容!
    [导入]如果得了ls综合症怎么办?
    sql语法、函数等等大全
    学习ASP.NET MVC3(3) Razor视图引擎(上)
    学习ASP.NET MVC3(1) 概述
    依赖属性的好处
  • 原文地址:https://www.cnblogs.com/zjzkiss/p/15901170.html
Copyright © 2020-2023  润新知