我们不妨先复习一下小学二年级学过的除法的定义:被除数/除数=商 ,这是我们在小学时经常用到的算法。现在,我们仔细在想一下,除法的本质到底是什么?我们假设一共有12块糖,分给四个小孩,这时你就会浮现出一种思维:12/4 但我们的前提是不使用该运算,或者说我们借助另外某种运算符间接实现这一运算,它是什么呢?答案是减法。回到分糖问题,除法的本质就是计算12中有多少个4,如果我们能设计一种循环,使其不断的减4,每减一次商加一,当减到最后一次时,该差就为余数。写入代码如图:
接下来我们开始判断回文数,“回文”是一个古今中外都常用的手法,指的是正读反读都能读通的句子,比如:“人人为我,我为人人”。回文数的定义也类似的,是指正读反读都一样的数字,例如:“121”等。
那么我们到底该怎么判断呢?其实很简单,我们是否只需要把我们在脑海里将数“倒”过来的过程,用java语言表示。数123倒过来变成321,是将个位变成百位,十位不变,百位变成个位。也就是说,我们只需一个数一个数的向前进行读取,读到该数就将其去掉,使得下次读取时仍然保持对个位的读取。举个例子,123,读取时123%10取个位3,在用123/10变成12,再%10取得2,接着在/10变成1,在%10得1,至此我们得到所以数字,我们可以这样写入算法,打印如图:
希望大家能够指出和进一步优化算法,共同进步!