演習 4-13
無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。
演習 4-13
文字列s
をその場所で逆順にする関数reverse(s)
の再帰版を書け。
Exercise 4-13
Write a recursive version of the functionreverse(s)
, which reverses the strings
in place.
#include <stdio.h> void reverse(char s[]) { int i; for (i = 0; s[i] != '\0'; i++) ; _reverse(s, 0, i - 1); } int _reverse(char s[], int left, int right) { if (left >= right) return; int tmp = s[left]; s[left] = s[right]; s[right] = tmp; _reverse(s, left + 1, right - 1); } int main(void) { char s[] = "HELLO!"; reverse(s); putchar('\n'); printf("[%s]\n", s); return 0; }