Почему бы вам просто не ввести его в редактор на выбранном вами языке, скомпилировать и запустить?Я выбрал 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
По сути, происходит то, что на каждом уровне вы распечатываете номер, затем дважды вызываете следующий уровень со следующим наименьшим номером (если он не достиг нуля).
В сторону: технически, вы do вызываете следующий слой с нулем, но, поскольку он сразу возвращается, это не влияет на вывод.
Надеемся, что следующая диаграмма проиллюстрирует это лучше, сразные символы, представляющие разные слои:
(4) (-------------------------------) (-------------------------------)
{3} {-----------} {-----------} {3} {-----------} {-----------}
[2] [1] [1] [2] [1] [1] [2] [1] [1] [2] [1] [1]