黑马程序员技术交流社区

标题: 获取一个数值的每一位通过递归怎么做到? [打印本页]

作者: 陈圳    时间: 2013-2-23 11:09
标题: 获取一个数值的每一位通过递归怎么做到?
本帖最后由 陈圳 于 2013-2-23 13:25 编辑

通过下面这种方式也可以获得,但是学习了递归之后,我想用递归的方式做出来.感觉难以下手.大家一起分析一下.
public int[] getNum(int num)  //获取一个数值每一位的方法
        {
                int arr[]=new int[4];            //假设数值的位数为4,就是千位.
                for(int i=(arr.length-1),x=10;i>=0;i--)
                {
                        arr=num%x;   //取一个整数的每一位数的方法 %10得低位,从个位开始把值赋给arr,
                        num/=x;//            除10使数减少.因为最低位已经取得了.
                }
                return arr;   //这个数组里存储着数值的每一位
        }


作者: 许鑫星    时间: 2013-2-23 11:32
  1.         public static void getNum(int num)  //获取一个数值每一位的方法,倒序
  2.     {
  3.                 if(num/10==0) {
  4.                         System.out.println(num%10);//最高位
  5.                 }else{
  6.                         System.out.println(num%10);
  7.                         getNum(num/10);
  8.                 }  
  9.     }
复制代码
为了方便我就直接打印了,可以倒序存进数组再返回。
作者: 王钊    时间: 2013-2-23 11:44
您要的答案:
  1. public class Test
  2. {
  3.         int[] arr=new int[4];//将数组设置为成员变量

  4.         private int index=3;//数组的索引

  5.         public static void main(String[] args)
  6.         {
  7.                 Test t=new Test();
  8.                 t.recursion(1000);

  9.                 for (int i=0;i<t.arr.length;i++)
  10.                 {
  11.                         System.out.println(t.arr[i]);
  12.                 }


  13.         }

  14.         public void recursion(int value)
  15.         {
  16.                 if (value<10)//递归出口,如果递归到了个位数,也就是递归该结束了
  17.                 {
  18.                         arr[index]=value;
  19.                         return;
  20.                 }
  21.                 else
  22.                 {
  23.                         arr[index--]=value%10;//将value的最后一位数放在数组最后面,然后递归
  24.                         recursion(value/10);//递归
  25.                 }

  26.         }
  27. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2