大佬们能给我讲解一下int fact里的运行过程 这里面我看不明白。
问题描述:
#include
int fact(int n)
{
if(n<2)
return n;
else
{
return fact(n/2)*10+n%2;
}
}
int main(void)
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("%d",fact(n));
return 0;
}
答
如果n小于2,就直接返回n
如果大于等于2,就返回:(递归调用fact传入的参数是n/2)*10+n%2
例如:输入了10:
第一层:
return fact(10/2)*10+10%2----------101*10+0=1010
第二层:
return fact(5/2)*10+5%2-----------10*10+1=101
第三层:
return fact(2/2)*10+2%2-----------1*10+0=10
第四层:
return fact(1)--------------1