strlen関数を、ループを使用しないで実現してください

とある書籍を読み返していて、

strlen関数を、ループを使用しないで実現してください

という文章が目に留まってちょいと気になった(スイッチが入った)ので、実際に書いてみた。所要時間は10分らしい。

久しぶりのC言語で、以下、私なりの答え。

#include <stdio.h>
#include <stdlib.h>
size_t strlen(const char *s) {
    return (*s != '\0' ? 1 + strlen(++s) : 0);
}
int main(void) {
    char *s = "hello, world.";
    printf("strlen(%s): %d\n", s, strlen(s));
    return EXIT_SUCCESS;
}

……所要時間約8分。

‘\0’を検出するまで再帰的に調べる方法ぐらいしか思いつかなかった。