你为什么不直接用你选择的语言编辑一个编辑器,编译它并运行?我选择了Java,但,这只是因为我之间CygWin的我此刻的箱装我 - 我宁愿被用C :-)
public class testprog {
public static void mysterious(int x) {
if (x == 0) return;
System.out.print(x + " ");
mysterious(x-1);
mysterious(x-1);
}
public static void main(String args[]) {
mysterious(4);
}
}
它输出的数字:
4 3 2 1 1 2 1 1 3 2 1 1 2 1 1
基本上,发生的事情是,在每个级别上,你打印出数字,然后用下一个最低数字两次调用下一个级别(除非达到零)。
旁白:从技术上说,你做调用下一层与零,但是,因为它直接返回了,它没有对输出的影响。
下图有望说明这更好的,用不同的符号代表不同的层次:
(4) (-------------------------------) (-------------------------------)
{3} {-----------} {-----------} {3} {-----------} {-----------}
[2] [1] [1] [2] [1] [1] [2] [1] [1] [2] [1] [1]
有人使用功能名称'mysterious'在其所有的考题? :) – sje397 2010-12-17 04:58:47
对不起,你自己做的时间 – KevinDTimm 2010-12-17 05:01:36
有什么神秘的吗?编译和运行比在SO上发布更困难吗? – ruslik 2010-12-17 05:08:32