题目:给一正整数N,求出1到N的所有数中5出现的次数。例如N=25则5出现的次数为:5, 15, 25共3次。
代码如下:
int f1(unsigned int N)
{
static int i = 0;
static int j = 0;
static int m = 0;
static int numOf5 = 0;
if (0 != N / 10)
{
j = (i + 1) * (int) pow((double) 10, i);
i++;
f1(N / 10);
int n = N % 10;
numOf5 += n * j + m * n * (int) pow((double) 10, i);
if (n > 5)
{
numOf5 += (int) pow((double) 10, i);
}
else if (n == 5)
{
m++;
}
i--;
j = j - (int) pow((double) 10, i);
}
else
{
numOf5 += N * j;
if (N > 5)
{
numOf5 += (int) pow((double) 10, i);
}
else if (N == 5)
{
m++;
}
i--;
j = (j - (int) pow((double) 10, i)) / 10;
return 0;
}
return numOf5 + m;
}