diff paper/sources/factorial.cbc @ 10:3d9addf62d0b

organized repository.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 16 Feb 2010 14:35:36 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/sources/factorial.cbc	Tue Feb 16 14:35:36 2010 +0900
@@ -0,0 +1,24 @@
+code print_factorial(int prod) {
+  printf("factorial = %d\n", prod);
+  exit(0);
+}
+
+code factorial0(int prod, int x) {
+  if (x >= 1) {
+    goto factorial0(prod*x, x-1);
+  } else {
+    goto print_factorial(prod);
+  }
+}
+
+code factorial(int x) {
+    goto factorial0(1, x);
+}
+
+int main(int argc, char **argv) {
+  int i;
+  i = atoi(argv[1]);
+
+  goto factorial(i);
+}
+