方法的递归与面向对象-阿里云开发者社区

开发者社区> 人工智能> 正文

方法的递归与面向对象

简介:

方法的递归:

  方法的递归就是方法自调,自己直接或间接调用自己,类似于循环的一个效果。方法递归需要有一个明确的出口条件,不然就会死循环不断的消耗内存导致堆栈溢出。例如:

wKioL1nnf9iSwi1SAAS2F0ehVRI581.png

 main方法不断调用自己,因为没有跳出条件所以进入了死循环,很快就会内存溢出。


正确的方法递归示例:

wKioL1nnf9yRWr0pAAgLZJ9L9qI957.png

 这是一个使用递归算法解决斐波那契数列的示例。但是递归算法有一个硬伤就是方法的不断调用会消耗大量的内存和CPU资源,递归的层次太多就会出现这种问题。所以一般需要递归层次太多的事情,就需要考虑用其他的算法来实现。


 方法在调用时,上一个方法没有结束是不会执行下面的代码的,所以调用在结束前一直会占据着内存。例如:

wKiom1nngpnAdEk-AAzr8hrJ0pg428.png

从示例可看出方法调用过程的一个现象。





面向对象:

  面向对象是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,这样就在程序开发中引入了面向对象设计的概念,面向对象设计实际上就是对现实生活中的对象进行建模操作。

  现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,例如:人类,书桌,电脑,高楼大厦等。人类解决问题的方式总是将复杂的问题简单化,于是会思考这些对象都是哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。静态部分,顾名思义就是不能动、不会改变的部分,这个部分就被称为对象的属性,任何对象都会具备自身的属性,例如一个人,其属性包括身高,体型,性别,年龄等。人可以说话,行走,微笑,哭泣等,这些就是人所具备的动态部分,也就是对象的行为,人类通过探讨对象的属性和行为来了解对象。

  在计算机的世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象为对象,然后考虑这个对象具备的属性和行为。

  面向对象和面向过程的区别主要是代码上和编程思想上的区别。面向过程是以函数、结构体为准,面向对象则是万事万物皆对象,所有事情都当做对象来处理。面向对象更接近现实生活,更有扩展性和灵活性。



类:

  类是对象的模板,是对象的设计蓝图。类是构建对象时所依赖的规范。对象就是符合某个类定义所产生出来的示例,简而言之对象就是实例化的类。

  类是世间事物的抽象称呼,而对象则是这个事物相对应的实体,如果面临实际问题,通常需要实例化类对象来解决。定义完一个类之后,可以根据这个类构建抽象出一个实体对象,最后通过实体对象来解决相关的实际问题。

  java语言中,类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,而类包括对象的属性和方法,所以类称为对象的模板、设计蓝图。例如:

wKioL1nnf-yRYw2OAA8ls-Ce0nk836.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974030,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章