• 实验二整理


    本周的学习我认为可以分为两个个部分,方法和递归。

    很多同学面对问题无从下手,不知道如何解决问题或者怎么找到问题的突破点,说到底是练的太少,自信心不够,面对这个问题只有不断的练习,多读别人的源代码,不断的进行分析总结,才能在面对问题是找到突破点。不要忘记写程序的四部曲,首先用自然语言描述程序的设计思路,第二步,画程序流程图。第三步,撰写伪代码。第四步,实验后总结。有了一定的方法会让编程事半功倍。

        方法,方法是类中最重要的成员,在数学函数中,因为是静态方法,所以可以用类名.函数名的方法直接调用。自己编写方法时,只需编写一个类,然后为其编写申明为public的函数即可,语法格式为:

    访问权限[static]返回值类型 方法名(参数列表)

    {

      语句……

    }

    返回值:

    return 表达式;

    还有就是方法重载,1,方法名不同;2,参数类型不同,参数个数不同,参数类型的顺序不同。满足以上的两个或多个方法,构成重载关系。

    递归,递归简单来说就是自己调用自己,递归的开头一定是一个判断递归结束条件是否满足的语句,函数体中至少有一句是自己调用自己的,还有就是每个递归函数中一定要有一个控制递归可以结束的变量。递归是一种很重要的思想,计算机中很多算法的实现都是依靠递归来完成的,所以要多练习,逐步掌握应用递归解决问题的方法。

    课后实验部分均用到了递归,第一个用阶乘来解决组合数的问题解决起来比较简单,编写一个函数用循环结构求出数的阶乘,然后编写组合数公式函数,调用阶乘函数即可求出结果。主要是第三种方法,用递归求组合数,现在考虑从前n个数中选择k个,那么有两种情况:

    1. 第n个数选进去,那么就是从剩下的n-1个数中选择k-1个,再加上第n个组成;

    2. 第n个数不选进去,那么就是直接从n-1个数中选择k个。

    组合数就是这两种情况的加和。

    这样解决起来就简单很多。

    汉诺塔问题是递归里的经典问题,我们把n个盘子从A柱移动至C柱

    那么这个问题可以表示为:

    Hanio(n,A,B,C);

    该问题可以分解成以下子问题:

    第一步:将n-1个盘子从A柱移动至B柱(借助C柱为过渡柱)

    第二步:将A柱底下最大的盘子移动至C柱

    第三步:将B柱的n-1个盘子移至C柱(借助A柱为过渡柱)

    最后可以发现,n个盘子,移动的总步数为2的n次-1。

    最后一个是递归解决回文字符串,回文字符串即类似于12321这样的形式,通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文,又回到了递归的问题,所以,只要思路清晰,问题解决起来也会变得容易。

  • 相关阅读:
    flash跨域策略文件crossdomain.xml配置详解
    ActionScript 3.0著名开源库 大集合
    SwiftSuspenders 1.6深入浅出1
    关于box2d相关学习教程记录一下
    as3框架集合
    写得蛮好的linux学习笔记七开机流程(收藏)
    写得蛮好的linux学习笔记一目录架构(收藏)
    写得蛮好的linux学习笔记三压缩命令(收藏)
    ListBox自绘,列表显示一系列图片
    Get WEB Page Content over Linux C
  • 原文地址:https://www.cnblogs.com/cj-125/p/7665122.html
Copyright © 2020-2023  润新知