java的递归明星力量

时间:2015-04-17 11:23:04

标签: java recursion

我正在尝试回答这个问题,但我似乎无法让它回来正确。我知道这很容易,但我似乎无法得到这个。这是在java中。

编写一个接受整数参数n的递归方法starString 并返回一个长度为2n的String对象(即第2个幂,包含2个星号)(星号)。 例如:请忽略这是用于格式化的破折号。我只需要发回""

中的内容
  

调用---------------------输出--------------------原因

     

starString(0); ------ * -------------------- 2power0 = 1

     

starString(1); ------ ** -------------------- 2power1= 2

     

starString(2); ------ **** -------------------- 2power2= 4

您可以假设n>0。请注意,您的方法体不能使用迭代

这就是我所拥有的:

private static String star(int n){
    if (n==0){
        String b ="*";
        return b;
    }
    else {
        String b ="**";
        n-=1;
        star(n);
        return b;
    }
}

3 个答案:

答案 0 :(得分:3)

试试这个:

private static String startStar(int n) {
    if (n==0) {
        return "*";
    } else {
        return startStar(n-1)+startStar(n-1);
    }
}

答案 1 :(得分:2)

对于任何n > 0,您始终会返回"**",并忽略star(n)来电的结果,这是错误的。
正确的版本是:

private static String star(int n) {
  if (n==0) {
    String b ="*";
    return b;
  } else {
    String t = star(n-1);
    return t + t;
  }
}

答案 2 :(得分:0)

 private static String starString(int n) throws IllegalArgumentException {
    if (n == 0) {
        return "*";
    } else if (n < 0) {
        try {
            throw new IllegalArgumentException("You can't pass a value less than 0");
        } catch (IllegalArgumentException e) {
            System.out.println("Caught an IllegalArgumentException: " + e.getMessage());
            return "";
        }
    } else {
        return starString(n - 1) + starString(n - 1);
    }
}