我想出了一个答案:
|
|
|
|
|
|
另一个: #include <stdio.h> int main(i) { printf("%d ",i<1000?1002-main(i+1):1); return i; }
纯 C 语言 main 函数递归版: #include <stdio.h> int main(i) { i<1001?printf("%d ",1002-main(i+1)):0; return i; }
对啊,最后一个有一个if哦。不理他啦,有兴趣的看看其他 啊
简直是偷换概念嘛。 这题目用来做脑筋急转弯挺合适。
我被搞糊涂了,循环的定义到底是什么,难道上面这些不算循环吗?
罪过罪过,怎么变成比长度了? 我的本意只是为了告诉那位网友,print 缺省参数就是 $_ 罢了。 窃以为比长度没啥意义。
shell版 seq 1000
Python版,也是17个字符... :) print range(1001)
一时看晕了头, 原来是: Haskell
呵呵, 谢谢 perl 版的老大 flw 指正, 这样只需要17个字符就可以了, 估计是最短的解决方案: map{print}0..1000 递归所有语言都支持, 一般都会用到递归. if可以用switch或三元操作符来代替. 这个perl版, 用另一种思路, 利用语言提供的功能变相的使用了循环. 另外: FP语言google上不好找啊, 一堆结果不知道是哪个, 可否给个主页的链接?
to ghostsaint: print 后面的 $_ 可以不要的。 循环可以用递归来代替,if 可以用模式匹配来代替, 因此这个问题用 FP 语言很好解决。 Haskell: f 0 = putStrLn "0" f n = do f (n-1) putStrLn $ show n Erlang: f (0) -> io:foramt( "0~n" ); f (N) -> f(N-1), io:format( "~p~n", [N] ).
to ghostsaint: print 后面的 $_ 可以不要的。 循环可以用递归来代替,if 可以用模式匹配来代替, 因此这个问题用 FP 语言很好解决。 Haskell: f 0 = putStrLn "0" f n = do f (n-1) putStrLn $ show n Erlang: f (0) -> io:foramt( "0~n" ); f (N) -> f(N-1), io:format( "~p~n", [N] ).
perl version, 只需要19个字符: map{print$_}0..1000 check out in my blog: http://shawnyan.blogspot.com
最后一个明显就有一个if