"回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
一个数字,把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。如果在30步以外(含30步)不可能得到回文数,则输出0。输入的数保证不为回文数。
详细描述:
在caculateHuiWenShu函数中实现该功能:
/* 功能:
* 输入:int 一个小于的进制数
* 输出:把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止,并输出次数,如果次计算不能得到回文数,则输出。
* 返回:
例如:进制则有:
STEP1: 87+78=165
STEP2: 165+561=726
STEP3: 726+627=1353
STEP4: 1353+3531=4884
则输出 4
*/
输入一个0<=m<30000<>的非回文数,
代码如下:
package huawei;public final class Demo { /* 功能: * 输入:int 一个小于的进制数 * 输出:把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止,并输出次数,如果次计算不能得到回文数,则输出。 * 返回: 例如:进制则有: STEP1: 87+78=165 STEP2: 165+561=726 STEP3: 726+627=1353 STEP4: 1353+3531=4884 则输出 4 */ public static long caculateHuiWenShu(int input) { long HuiWenNum=0; input =Math.abs(input); if(isHuiWen(input)) { return 0; } while(HuiWenNum<=30) { HuiWenNum++; if(isHuiWen(input+reverse(input))) { break; } input=input+reverse(input); } return HuiWenNum>30?0:HuiWenNum; } public static int reverse(int input) //一个数倒转后的数 { int output =0; while(input>0) { output = output*10+input%10; input=input/10; } return output; } public static boolean isHuiWen(int input)//判断是否为回文数 { if(input==reverse(input)) return true; else return false; }}