java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示。

用java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示。

2个回答

数组可以表示很多数的…你说,用一个数表示啥意思??

你应该是想要下面的实现。如果有用请采纳。

import java.util.ArrayList;
import java.util.List;

public class TestMain {

public static void main(String[] args) {

    // 递归实现,10进制累加
    // 数:123,累加次数(加1):878
    System.out.println(new TestMain().startIncrement(123, 878));

}

public int startIncrement(int value, int incrementCount) {

    // 把一个数份成数组表示,从低位到高位顺序存储
    String[] ss = String.valueOf(value).split("");
    List<Integer> list = new ArrayList<Integer>();
    for (int i = ss.length - 1; i >= 0; i--) {
        if (!ss[i].isEmpty()) {
            list.add(Integer.valueOf(ss[i]));
        }
    }

    // 累加N回
    int retValue = 0;
    while (incrementCount > 0) {
        incrementCount--;

        // 递归实现,从低位开始加算(最低位index:0)
        retValue = increment(list, 0);
    }

    return retValue;
}

// 递归方法(1次加1动作)
public int increment(List<Integer> list, int index) {

    // 进位时,没有超过最高位
    if (list.size() > index) {

        // 求10进制余数
        int mod = (list.get(index).intValue() + 1) % 10;

        // 余数分配给当前位
        list.set(index, Integer.valueOf(mod));

        // 余数是0,说明有进位,则向高位递归
        if (mod == 0) {
            increment(list, ++index);
        }
    } else {

        // 进位时,超过最高位,追加一个最高位
        list.add(new Integer(1));
    }

    // 1次加1动作后的结果,从高位到低位连接后,再变换成数值
    StringBuilder sb = new StringBuilder();
    for (int i = list.size() - 1; i >= 0; i--) {
        sb.append(list.get(i));
    }

    return Integer.parseInt(sb.toString());
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐