C言語で文字列を反転させる再帰関数
はじめに
こんな問題を見つけたので、やってみました。
C言語で再帰を使って文字列を反転させよ。
制限時間5分。#include <stdio.h> #include <string.h> void reverse( char* str ) { // ここだけを編集してください。 } int main( int argc, char** argv ) { char* str = argv[1]; reverse( str ); printf( "%s\n", str ); return 0; }
やってみた
reverse()関数にはchar*型の引数1つしか渡せないっぽいのでちょっと悩みました。結局static変数でなんとかすることに。
もうちょっとかっこいいやり方ないかなー。
#include <stdio.h> #include <string.h> void reverse(char* str) { static int i = 0; int len = strlen(str); char tmp; if (i >= len / 2) return; tmp = str[i]; str[i] = str[len - 1 - i]; str[len - 1 - i] = tmp; i++; reverse(str); } int main(int argc, char** argv) { char* str = argv[1]; reverse(str); printf("%s\n", str); return 0; }
まとめ
static変数初めて使いました。今後もあんまり使う機会ないかも。