编写一个递归函数,统计任意一个正整数的位数。求大神看下错在哪里了。

#include"stdio.h"
shu(int n)
{int i;
while(n!=0)
{
n=n/10;
i++;}
return i;}
main()
{
int a,f;
scanf("%d",&a);
f=shu(a);
printf("%d",f);
}

第1个回答  2015-11-20
楼主的程序,并没有使用递归结构。追问

那应该怎么编呢

追答#include"stdio.h"

int i;

void shu(int n)
{
    n = n / 10;
    if(n) shu(n); //自身调用才是递归
    i++;   
}
int  main(void)
{
    int a;
    i = 0;
    scanf("%d", &a);
    shu(a);
    printf("%d\n", i);
    return  0;
}

本回答被提问者采纳
相似回答