int charCountSub(int count, const char* s, char ch)
{
if (*s == 0) return 0;
return charCountSub((*s == ch) + count, s + 1, ch);
}

int charCount(const char* s, char ch)
{
return charCountSub(0, s, ch);
}

スタックが心配なときは末尾再帰にすれば。