计算两数之和深度理解面向对象

简介: 计算两数之和深度理解面向对象

首先大家先来看第一版代码的样子。


fcfa35f056ea45f5b2d779eb3b807241.png


其次是第二版:


0049be901cdc4105b9480b06419823ca.png


从表面上看,这第二版代码无非也就是定义了两个变量,运行结果一摸一样呀,这完全没咋变呀。


可是真的是这样吗?


首先第一点:从版本一到版本二实现了一个有限到无限的扩展,什么是有限什么是无限呢,哪里表示有限了,哪里又表示无限了呢?版本一中:有限表示是5+6这里,print5+6,它的结果永远智能是11,所以是有限的,版本二中:定义了两个变量a、b,这里的a可以是任意数,b也可以是任意数,再思想上移一点就是从有限的两个数相加到无限个数相加,这里的无限个数相加怎么理解呢?话不多说直接看代码:


60b201e3960947ac861070bac39e6b52.png


这里因为a可以是任意数,所以我把5+1赋值给了a,这样再打印出a+b的结果的话就成了三个数相加,一个是5、一个是1、一个是6,也就是说这里可以是2个数相加,3个数相加,那么无限个数呢?也是可以有的。


那么再来说第二点:这里的a+b实现了一个对算法的封装,从而实现了在这里面具体的对加法的复用。那我这怎么就实现对算法封装了呢?怎么就实现对加法复用了呢?

首先是对算法的封装,算法也包括了很多种,其中也包括了运算方法,我们给他统称为算法,这里的 System.out.println(a+b); 这行代码相当于是对运算方法加法的封装,它也是算法的一种么,所以我们在这里又思想上移了一下,对算法的封装,除了加法我也还可以是减法、除法、乘法。上代码:


62c8355474904d468a634c6dbb3c6189.png


那么复用呢则是体现在,我们只需要去修改a和b的值就可以实现任意数进行相加了。


最后一句:我们做软件开发的需要有想象力和创造力,同样的代码,不同的人看到的却是不同的思想,不同的发展与未来。


目录
相关文章
|
5月前
|
算法 Java Go
斐波那契数列是一个非常经典的数学问题,在计算机科学中也经常被用作算法设计和分析的例子。
斐波那契数列是一个非常经典的数学问题,在计算机科学中也经常被用作算法设计和分析的例子。
|
5月前
|
算法 数据挖掘 大数据
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
|
6月前
|
机器学习/深度学习
20004.C语言编程基础(0001)- 递归法求阶乘
20004.C语言编程基础(0001)- 递归法求阶乘
69 0
|
算法 前端开发
前端算法-各位相加
前端算法-各位相加
|
并行计算 C++
如何花式计算20的阶乘?
如何花式计算20的阶乘?
193 0
|
算法 C++
<<算法很美>>——(四)——深入递归<二>——“逐步生成结果“类问题之非数值型
<<算法很美>>——(四)——深入递归<二>——“逐步生成结果“类问题之非数值型
<<算法很美>>——(四)——深入递归<二>——“逐步生成结果“类问题之非数值型
C语言(冒泡排序思想及代码实现)(分别用递归和非递归实现斐波拉系数)(数组)(函数)
C语言(冒泡排序思想及代码实现)(分别用递归和非递归实现斐波拉系数)(数组)(函数)
C语言(冒泡排序思想及代码实现)(分别用递归和非递归实现斐波拉系数)(数组)(函数)
|
存储 算法 C语言
【Python 百炼成钢】 小学生算术、阶乘的精确值、孪生素数、6174问题
【Python 百炼成钢】 小学生算术、阶乘的精确值、孪生素数、6174问题
【Python 百炼成钢】 小学生算术、阶乘的精确值、孪生素数、6174问题
|
存储 SQL 算法
两数之和算法讨论
两数之和算法讨论
两数之和算法讨论
|
Go 开发者
位运算深度讲解|学习笔记
快速学习位运算深度讲解。
102 0
下一篇
无影云桌面