java递归整数逆序,【java】整数逆序,递归实现和字符串切割实现。

今天看到一道算法题。说让整数逆序,用递归算法实现,书上的源码是C语言实现的,

以下为C语言版:

void convert(int *result, int n) { if(n>=10) convert(result+1, n/10); *result = n%10; } int main(int argc, char* argv[]) { int n = 123456789, result[20] ={}; convert(result, n); printf("%d: ", n); for(int i=0; i<9; i++) printf("%d", result[i]); }

能够看出来。C语言版相当简洁。于是,我就想着用java语言实现这个逆序,并且是用递归算法。

/** * 将一整数逆序。递归实现 * @author Ningkui * */ public class ReverseTest { //幂次方数,用于递归方法中 static int i = 1; //临时字符串。用于存储递归方法的计算过程中产生的值。 static StringBuffer temporary = new StringBuffer(); //主方法 public static void main(String[] args) { //原始数据 int number = 123456789; System.out.println("逆序前:"+number); /* * 递归方法 */ converts(number); System.out.println("逆序后得到的值:"+temporary); } /** * 递归实现逆序主要方法 * @param number */ private static void converts(int number) { if(Integer.toString(number).length() != i-1){ //计算每一位上的值。通过取余获得,例如1234,获得1000,200,30,4 long flag = Math.round(number%Math.pow(10, i)); //取多位值的首位,如1000取1,500取5,30取3,4取4 flag = (long) (flag/Math.pow(10, i-1)); //将上步骤获得的值添加到临时字符串中 temporary.append(flag); //更新幂次方数 i++; //递归,依次对高位进行操作获取。 converts(number); } } }

后来想了一下,其实将值转化为字符串在切割成一个一个数字进行前后对调也是可以的。

/** * 将一整数逆序。字符串切割实现 * @author Ningkui * */ public class ReverseTest { //主方法 public static void main(String[] args) { //原始数据 int number = 123456789; System.out.println("逆序前:"+number); /* * 字符串切割实现 */ // convertsBySpilt(number); System.out.println("逆序后得到的值:"+number); } /** * 字符串切割实现逆序 * @param number */ private static void convertsBySpilt(int number){ //将测试数据转换为字符串类型。 String str = Integer.toString(number); //将数据按一位数字拆分,并放入到数组中。 char[] chars = str.toCharArray(); //声明i,j,分别从前和后往中间靠拢,循环交换前后对应的值, for(int i=0,j=chars.length-1;i

如果大家有其他方法实现的,欢迎讨论交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值