递归倒序输出数字

递归倒序输出数字

输入一个数: 1234,倒序输出它的字符串形式,用递归实现。


import org.junit.Assert;
import org.junit.Test;

/**
 * 输入一个数: 1234,倒序输出它的字符串形式,用递归实现
 * e.g.  1234 =>  "4321"
 * e.g.  -1234 =>  "-4321"
 * e.g.  1 =>  "1"
 */
public class AppTest {

    @Test
    public void test() {
        Assert.assertEquals("==", "4321", reverseInt(1234));
        Assert.assertEquals("==", "-4321", reverseInt(-1234));
        Assert.assertEquals("==", "1", reverseInt(1));
        Assert.assertEquals("==", "0", reverseInt(0));
    }


    public String reverseInt(int num) {
        //处理负号
        boolean flagNegative = num < 0;
        if (flagNegative) {
            num = num * -1;
        }
        String str = String.valueOf(num);
        int len = str.length();
        String result = reverse(str, 0, len);
        if (flagNegative) {
            result = "-" + result;
        }
        return result;
    }

    private String reverse(String str, int i, int length) {
        //终止条件
        if (i == length - 1) {
            return "" + str.charAt(i);
        }
        return reverse(str, i + 1, length) + str.charAt(i);
    }
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注