aboutsummaryrefslogtreecommitdiff
path: root/ch4
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ch4/4-13_recursive-reverse.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/ch4/4-13_recursive-reverse.c b/ch4/4-13_recursive-reverse.c
new file mode 100644
index 0000000..85a5b91
--- /dev/null
+++ b/ch4/4-13_recursive-reverse.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <string.h>
+
+/* The C Programming Language: 2nd Edition
+ *
+ * Exercise 4-13: Write a recursive version of the function reverse(s), which
+ * reverses the string `s` in place.
+ *
+ * Answer: Much like the last exercise, the trick is in terminating your flow
+ * early and resetting state for the next string.
+ */
+
+void reverse(char[]);
+
+int main() {
+ char foo[40] = "Learning C is fun and challenging.";
+ printf("Before: %s\n", foo);
+ reverse(foo);
+ printf(" After: %s\n", foo);
+ /* I don't know how to set a char array to another string... */
+ char bar[30] = "Hello out there!";
+ printf("Before: %s\n", bar);
+ reverse(bar);
+ printf(" After: %s\n", bar);
+ return 0;
+}
+
+void reverse(char s[]) {
+ static int i = 0;
+ static int j = 0;
+ int c;
+
+ if (j == 0) {
+ j = strlen(s) - 1;
+ }
+
+ if (i < j) {
+ c = s[i];
+ s[i] = s[j];
+ s[j] = c;
+ i++;
+ j--;
+ reverse(s);
+ return;
+ }
+ i = 0;
+ j = 0;
+}
span>cli: Add "delete" commandzlg2-0/+19 2018-10-06Remove ID field from DBzlg3-38/+46 2018-10-06cli: change "Status" heading to "Progress"zlg2-36/+40 2018-09-29Bump to 0.3alpha5 for PyPIzlg1-1/+1 2018-09-29cli: Add pretty printing to 'list' commandzlg3-17/+107 2018-09-08setup.py: Bump to alpha4 for PyPIzlg1-1/+1 2018-09-08cli: add '--raw' option to list commandzlg2-9/+45 2018-09-08Add remaining filters to vgstash packagezlg1-2/+11 2018-09-04Update LICENSE to match setup.pyzlg1-80/+67 2018-09-03Branch off from master with pytest, tox, clickzlg16-778/+779 2018-03-18Flesh out filter types and ownership statuszlg3-82/+144 2018-03-18README.mdown: break line correctlyzlg1-1/+1 2018-03-18add 'playlog' list filterzlg2-2/+9 2018-03-13Update helpers a bitzlg1-2/+9 2018-03-13Make VGSTASH_DB_LOCATION point to a filezlg2-21/+20 2016-11-18Remove settings from helpers.shZe Libertine Gamer1-5/+0 2016-11-15Correct phrasing in README.Ze Libertine Gamer1-4/+4 2016-11-13DerpZe Libertine Gamer1-0/+1 2016-11-03Improve error handling in shell scriptsZe Libertine Gamer4-3/+23 2016-10-24Correct run_again, add recursionZe Libertine Gamer1-0/+4 2016-10-21Add quotes to correct behavior for arglistZe Libertine Gamer1-1/+1 2016-10-14updater.sh: add recursion, error handlingZe Libertine Gamer1-43/+101 2016-10-14Correct pipe-handling behaviorZe Libertine Gamer1-1/+9 2016-10-12Clarify a method to move between platformsZe Libertine Gamer1-2/+5