strlen( )関数をループなしで

「ソフトウェア開発の名著を読む」の61ページより

ループじゃなかったら再帰じゃね?ってことで
ちょっと投げやり。

#include <stdio.h>
#include <string.h>

int strlen2(char *);

int main()
{
  char c[32];
  
  memset(c, 0, sizeof(c));
  strcpy(c, "abcdefg");

  printf("%s\n", c);
  printf("length(strlen2) = %d\n",strlen2(c));
}


int strlen2(char *str)
{
  char *p;
  int count = 0;
  p = str;
  
  if(*p != '\0'){
  count = strlen2(p + 1) + 1;
  }
  return count;
}