Bladeren bron

New tests for recursion.

Merijn Verstraaten 10 jaren geleden
bovenliggende
commit
cb1589e6ee

+ 47 - 0
test/basic/functional/mutual-recursion.cvc

@@ -0,0 +1,47 @@
+extern void printInt(int val);
+extern void printNewlines(int num);
+extern void printSpaces(int num);
+
+bool even(int i) {
+    bool result = true;
+
+    if (i > 0) result = odd(i - 1);
+    else if (i < 0) result = odd(i + 1);
+
+    return result;
+}
+
+bool odd(int i) {
+    bool result = false;
+
+    if (i > 0) result = even(i - 1);
+    else if (i < 0) result = even(i + 1);
+
+    return result;
+}
+
+export int main() {
+    for (int i = 0, 6) {
+        printInt((int) even(i));
+        printSpaces(1);
+    }
+    printNewlines(1);
+
+    for (int i = 0, 6) {
+        printInt((int) odd(i));
+        printSpaces(1);
+    }
+    printNewlines(1);
+
+    printInt((int) even(37));
+    printSpaces(1);
+    printInt((int) odd(37));
+    printNewlines(1);
+
+    printInt((int) even(42));
+    printSpaces(1);
+    printInt((int) odd(42));
+    printNewlines(1);
+
+    return 0;
+}

+ 4 - 0
test/basic/functional/mutual-recursion.out

@@ -0,0 +1,4 @@
+1 0 1 0 1 0 
+0 1 0 1 0 1 
+0 1
+1 0

+ 21 - 0
test/basic/functional/recursion.cvc

@@ -0,0 +1,21 @@
+extern void printInt(int val);
+extern void printNewlines(int num);
+extern void printSpaces(int num);
+
+int factorial(int i) {
+    int result = 1;
+
+    if (i > 0) result = i * factorial(i - 1);
+
+    return result;
+}
+
+export int main() {
+    for (int i = 0, 6) {
+        printInt(factorial(i));
+        printSpaces(1);
+    }
+    printNewlines(1);
+
+    return 0;
+}

+ 1 - 0
test/basic/functional/recursion.out

@@ -0,0 +1 @@
+1 1 2 6 24 120