我在试着理解这里的代码。我试着去理解它已经有一段时间了,因为我不能完全理解它,所以我向你求助。
#include<stdio.h>
int sumdig(int);
int main()
{
int a, b;
a = sumdig(123);
b = sumdig(123);
printf("%d, %d\n", a, b);
return 0;
}
int sumdig(int n)
{
int s, d;
if(n!=0)
{
d = n%10;
n = n/10;
s = d+sumdig(n);
}
else
return 0;
return s;
}
我可以理解,数字将继续传递函数,直到它达到0,然后它返回1,因为0==0,但在它返回3并以6结束之后。我不明白记得我是新来的C
最佳答案
第一轮,with123
,n % 10
将计算为3
,n / 10
将计算为12
,因此它将返回3 + sumdig(12)
。sumdig(12)
将以同样的方式返回2 + sumdig(1)
,sumdig(1)
将返回1 + sumdig(0)
,sumdig(0)
将返回0
,此时它将停止。所以总的来说,它将返回3 + 2 + 1
,这是123
中的数字之和。