显示从 1 到 100 的数字,不带循环或条件 [闭合]
有没有办法打印从1到100的数字,而无需使用任何循环或条件,如“if”?我们可以很容易地使用递归,但这又有一个if条件。有没有办法不使用“如果”?也没有重复的打印语句,或包含从 1 到 100 的所有数字的单个 print 语句。
最好使用 Java 解决方案。
有没有办法打印从1到100的数字,而无需使用任何循环或条件,如“if”?我们可以很容易地使用递归,但这又有一个if条件。有没有办法不使用“如果”?也没有重复的打印语句,或包含从 1 到 100 的所有数字的单个 print 语句。
最好使用 Java 解决方案。
了解您的图书馆。
public class To100 {
public static void main(String[] args) {
String set = new java.util.BitSet() {{ set(1, 100+1); }}.toString();
System.out.append(set, 1, set.length()-1);
}
}
(可用于更改分隔符。例如,用于空间分隔。String.replaceAll
.replaceAll(", ", " ")
解释:
java.util.BitSet
是一个方便的小类,表示任意大(非稀疏)的正整数集。(它确实有非常糟糕的部分:不是最终的,不必要的线程安全,不支持良好的构建等。哒哒。BitSet
java.util
BitSet.set
在集合中设置一点(“设置”这个词的两个完全不同的含义 - 我喜欢它)。这是一个半开放式的范围 - 最高价值独家;底部包含。将 1 添加到顶部以包含 100。BitSet.toString
实际上是由 API 文档精确定义的。append
随着 J2SE 5.0 中接口的引入而添加。它实质上执行子字符串并打印结果。(一个小秘密:这实际上并不能保证规范来刷新输出,但实现总是会的。PrintStream
Appendable
BitSet
不要在任何理智的情况下这样做!
public class Fail {
public void thisFails(int x){
System.out.println(x);
Integer[] bigArray = new Integer[9450];
thisFails(x+1);
}
public static void main(String[] args) {
Fail failure = new Fail();
failure.thisFails(1);
}
}
当使用1m的堆空间(java -Xmx1m Fail)运行时,它将在第100个递归处耗尽堆。
...
我现在要去洗手。