3 回答

TA贡献1906条经验 获得超3个赞
使用递归,即递归调用您的方法并维护一个计数器,当达到 1000 时,终止递归。
public class Recusrion{
public static void main(String[] args){
print(0);
}
static void print(int num){
if (num > 1000)
return;
System.out.println(num);
print(++num);
}
}

TA贡献1824条经验 获得超8个赞
您可以使用Stream:
public static void print(int times) {
IntStream.range(0, times).forEach(i -> System.out.println("Bob ate burgers"));
}
print(1000); // this is client code
您可以使用递归,但问题是times您可以获得的大SacOverflowException:
public static void print(int times) {
if (times >= 0) {
System.out.println("Bob ate burgers");
print2(--times);
}
}
print(1000); // this is client code
下一个变体使用两种不同的方法来模拟调用堆栈而无需递归:
public static void print(int times) {
step1(times, 0);
}
private static void step1(int times, int i) {
step2(times, i);
}
private static void step2(int times, int i) {
if (i < times) {
System.out.println("Bob ate burgers");
step1(times, ++i);
}
}
print(1000); // this is client code

TA贡献1817条经验 获得超6个赞
其他人可以打高尔夫球这个答案。它旨在“使用方法”。不确定是否foreach算作循环。排序取决于一个人的定义。假设方法存在于一个类中RecursePrint,因此请根据需要进行调整。
public void out(int cntr) {
System.out.println("Bob's your uncle (" + cntr + ")");
}
此方法使用 IntStream 和一个foreach. 同样,不确定是否foreach违反循环思想。
public void oneLiner()
{
IntStream.rangeClosed(1, 1000).forEach(i -> out(i));
}
递归方法(原始)。在这种情况下,该方法会调用自身,直到达到所需的计数。可以将其更改为采用最大值的参数。它使用一个if语句,但没有循环。
public void doit(int cntr)
{
if (cntr >= 1000) {
return;
}
out(cntr);
doit(++cntr);
}
public static void main(String[] args)
{
RecursePrint rp = new RecursePrint();
rp.doit(0);
rp.oneLiner();
}
添加回答
举报