开始这个递归函数是怎么运算的,求解释,putchar(n%10+'0')这语句话怎么执行的,假如我

开始这个递归函数是怎么运算的,求解释,putchar(n%10+'0')这语句话怎么执行的,假如我输258,是不是先输出258%10=8 ?不太懂,能详细解释下吗

n%10+'0',是输出整型数字对应的字符数字,这是根据ACSII码得来的。比如3+'0'就能得到字符'3'。
在递归里面,n不断的除以10,用于得到移除最低位后的值。而n%10是用来得到当前最低位的值。
比如258/10=25,258%10=8.
258/10=25,不等于0.继续递归
25/10=2,2不为0,继续递归
2/10=0,为0,不继续递归,也就是跳过if后covert函数。然后当前层的函数继续执行,putchar() 2%10+'0'得到字符‘2’。当前层的函数执行完了,返回上一层。
上一层n的值为25.执行putchar,输出字符'5'。然后回到上一层
上一层n的值为258,执行putchar,输出字符‘8’追问

它如何从当前层跳到上一层的?

追答

一个函数执行完了,就返回调用者啊。
比如:
fun()
{
//所要执行的操作
}
main()
{
//第一步
fun();
//第二步
}
程序从main函数开始,首先执行第一步,然后调用fun()函数,当fun()函数执行完之后,自动返回调用者,也就是main函数。紧接着,main函数继续执行,第二步。
递归也是这样。递归是自己调用自己,但你也可以看做是多个函数嵌套调用,只不过这多个函数的函数名和函数体是一样的

温馨提示:答案为网友推荐,仅供参考
相似回答