gpt4 book ai didi

java - 使用递归打印 n 次字符串

转载 作者:行者123 更新时间:2023-11-30 07:41:23 25 4
gpt4 key购买 nike

我在进行以下练习时遇到了问题。

编写一个 starString 方法,它接受一个整数参数 n 并返回一串星号(星号),长度为 2n(即 2 的 n 次方)。例如:

Call    Output  Reason
starString(0); "*" 2^0 = 1
starString(1); "**" 2^1 = 2
starString(2); "****" 2^2 = 4
starString(3); "********" 2^3 = 8
starString(4); "****************" 2^4 = 16

如果传递的值小于 0,则应抛出 IllegalArgumentException。

我试过这个,但我正在寻找一种方法来多次乘以字符串“*”。 PD:我不能使用 .repeat

我坚持要获取 2 的 n 次方的值。正如我所尝试的

int x = (int)Math.pow(2,(n));

但我不知道该怎么办。

public static String starString(int n) {
if(n<0){
throw new IllegalArgumentException("No negative values allowed");
}
if(n==0){
return "*";
}else{

return starString(0) + starString(n-1);
}

}
test #1:starString(0)
return:"*"
result: pass

test #2:starString(1)
return:"**"
result: pass

test #3:starString(2)
expected return:"****"
your return:"***"
result: fail

test #4:starString(3)
expected return:"********"
your return:"****"
result: fail

test #5:starString(4)
expected return:"****************"
your return:"*****"
result: fail

test #6:starString(-1)
exp. exception:IllegalArgumentException
your exception:IllegalArgumentException on line 3: No negative values allowed
result: pass

最佳答案

这会起作用,尽管它会在大 n 时爆炸。

public static String starString(int n) {
if(n<0){
throw new IllegalArgumentException("No negative values allowed");
}
if(n==0){
return "*";
}else{

return starString(n-1) + starString(n-1);
}

}

显然你可以使用 2^n

public static int twoToN(int n) {
if(n<0){
throw new IllegalArgumentException("No negative values allowed");
}
if(n==0){
return 1;
}else{

return 2* twoToN(n-1);
}
}

关于java - 使用递归打印 n 次字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com