如何在不使用条件语句和循环语句的情况下实现控制台输出1~100?

题目:不使用条件语句和循环语句实现控制台输出1-100。
我的思路是使用递归,运用除0报错try,catch来结束递归,但是总觉得不是正常的方法,所以想问问诸位,有什么好方法,任何程序语言都可以~

阅读 9.8k
11 个回答

我是来娱乐大家的

// 直接写100个输出语句
print(1);
print(2);
...
print(100);
// 直接写1~100
print(1, 2, 3, 4, ...., 100);
// 用字符串
print("1 2 3 4...100");
// 用函数来加速
int i = 1;
void layer1() { // 4 times
    print(i++);
    print(i++);
    print(i++);
    print(i++);
}
void layer2() { // 4 * 4 times
    layer1();
    layer1();
    layer1();
    layer1();
}
void layer3() { // 4 * 4 * 4 times
    layer2();
    layer2();
    layer2();
    layer2();
}
void layer4() { // 64 + 2 * 16 + 4 = 100 times
    layer3();
    layer2();
    layer2();
    layer1();
}

layer4();

一行python,完全无循环,也不用map:

print repr(list(range(1,101))).replace(', ', '\n').strip('[]')

这是课后脑筋急转弯的题目吗

c#:

Enumerable.Range(1, 1000)
                      .ForEach(num => Console.WriteLine(num));

JavaScript:

function x (i, j) { i > j || [console.log(i),x(++i, j)]; }; x(1, 100)

Ruby 版

(1..100).each { |i| puts i}

Java 8 版
IntStream.range(1,101).forEach(System.out::println);

新手上路,请多包涵

方法1:使用递归
方法2:用while循环

在看了这么多人的答复后,有些回答写得相当精彩,但是有些朋友的质疑也让我深思了这个问题,怎么定义条件语句和循环语句?C#的ForEach究竟算不算循环?我觉得只要是表面上没有用就可以了,因为他的具体的实现可能是我们无法得知的,而且对于使用递归的情况来说,我使用的是尾递归,而编译器会对于尾递归进行优化,他在编译器层面上会被优化成循环,那么使用尾递归又算不算循环呢?所以我觉得探究这种问题不必要非得刨根究底,只要能够从中获得思路,学到东西就好了。

新手上路,请多包涵

php:

<?php
$numbers=range(1,9);
foreac($numbers as $v){
echo $v;
}

?>

楼上的大哥们,你们都用range函数了还用那么复杂?移位操作可以实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进