summaryrefslogtreecommitdiff
path: root/rushs/tinyprintf/hanoi
diff options
context:
space:
mode:
Diffstat (limited to 'rushs/tinyprintf/hanoi')
-rw-r--r--rushs/tinyprintf/hanoi/hanoi.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/rushs/tinyprintf/hanoi/hanoi.c b/rushs/tinyprintf/hanoi/hanoi.c
new file mode 100644
index 0000000..6ac2b71
--- /dev/null
+++ b/rushs/tinyprintf/hanoi/hanoi.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+void move(unsigned src, unsigned spare, unsigned dst, unsigned n)
+{
+ if (n == 0)
+ {
+ return;
+ }
+
+ move(src, dst, spare, n - 1);
+
+ printf("%u->%u\n", src, dst);
+
+ move(spare, src, dst, n - 1);
+}
+
+void hanoi(unsigned n)
+{
+ if (n == 0)
+ {
+ return;
+ }
+
+ move(1, 2, 3, n);
+}
+
+int main(void)
+{
+ hanoi(3);
+ return 0;
+}