《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】
问题的由来
话说我这里有个小萝莉非要拜我为师。呵呵,对于程序媛我一向——嗯嗯认为程序不如人好看,再加上该名萝莉大学还没毕业。术语都多半没有听过,于是就想着拒绝,当时嘴一贱,就说了一句:你用一个For循环做个99表出来。
当然,这个对于小萝莉们来说,已经足够形成挑战了,可是对于群里的一众大佬们来说,自然是不在话下,3下5除二就搞定了。我又异想天开一下。假设不用推断语句。是不是也完毕呢?粗想想是能够的,于是动手摆了几行代码。确实能够。
于是就不断加码。不断添加新的完毕条件,于是就形成了以下的问题。挑战极限这个定语,有一定的博眼球的意思。实际上不是那么难了。
注意:
此题是考思想的,用“*”之外的运算符。如 "& | ^ >> << / % "的,尽管确实能够有解,可是代码逻辑与我倡导的:"一个好的算法首先是简单易懂的。其次是清晰明了的。再个一定是充满美感的"是相违背的。为什么以下条件这么多,实在是亲们的创意无限,我防不胜防哦。
活动规则:
1. n能够是随意正整数,仅仅要N的平方不要溢出都能够
2. 一行一行print结果的无效
3. 不同意出现if,switch,?:语句及推断语句的变体,也就是仅仅同意循环变量做条件比較以确定循环次数。不同意其
4. 它变量进行条件推断
5. 不同意出现异常
6. 循环语句中仅仅能有一个变量
7. 代码行数超过100行的无效
8. 特别提示:提交问题并在CSDN关注本人。回答才有效
9. 答案是否有效解释权归本人全部
问题例如以下
无论是什么编程语言。最好是Java。仅仅要是在程序中仅仅用了一条循环语句正确的输出了99表,那么就算挑战成功。
以下是我的測试用例:
測试1:
public static void main(String[] args) {
new Test99().print(9);
}
执行结果:
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
測试2:
public static void main(String[] args) {
new Test99().print(5);
}
执行结果:
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
第一个、第二个回答正确的人将获得奖励,以抢先的时间为准。
特别提示:凡是有两个for循环的,有 if有?:的。有Switch的所有Out!
posted on 2017-07-02 13:16 gavanwanggw 阅读(134) 评论(0) 编辑 收藏 举报