那么就开始编写吧!
杨成调出编辑器面板。
Firstly,心中谨记规则——先翻转,再相加。
所以,一个对正整数作翻转的函数是必须的。
因为,结果是要得到回文数。
所以嘛,一个判断正整数是否是回文数的函数也是必须的。
这些都是小case,杨成很快就搞定了。
然后,开始切入正题,怎么编写196算法呢?
接收一个正整数,对它做翻转。
和原数相加,得到和。
如果这个和是回文数,那么就OK,返回结果,终止算法。
如果不是回文数,将和继续翻转,相加。
Continue....
这个过程很简单,反复迭代。
关键在于考虑“利克瑞尔数”。
如果超过了一定的时间或范围,应该及时中断。
否则,就会陷入可怕的死循环。
杨成的处理是这样:
一旦当前运算会丢失精度,就返回-1。
很多语言如果不使用大数计算库,一定数值范围外运算会丢失精度。
这样确保了小数值范围内求解,不会出现死循环。
通过以上几个步骤,简易版的196算法就成型了!