C语言函数递归

若下面程序的输入为30501,则该程序的输出结果为:voidfun(intn){if(n/10)fun(n/10);if(n%10)printf("%c\... 若下面程序的输入为30501,则该程序的输出结果为:
void fun(int n)
{if(n/10)
fun(n/10);
if(n%10) printf("%c\t",n%10+'0');}
main()
{int n;
scanf("%d",&n);
fun(n);
}
输出结果:3_ _ _ _ _ _ _5_ _ _ _ _ _ _1_ _ _ _ _ _ _
请问为什么顺序是351而不是153
展开
 我来答
yecange
推荐于2016-07-13 · 超过92用户采纳过TA的回答
知道小有建树答主
回答量:114
采纳率:88%
帮助的人:107万
展开全部
因为代码fun函数调用顺序是fun(30501)、fun(3050)、fun(305)、fun(30)、fun(3);fun(3)调用终止,执行输出语句先是fun(3),即输出3,然后是执行fun(30)的输出语句..……刚好与调用顺序相反,如果想输出时1 5 3,把两个if语句顺序调换即可:

#include"stdio.h"
void fun(int n)
{

if (n % 10) printf("%c\t", n % 10 + '0');
if (n / 10)
fun(n / 10);
}
main()
{
int n;
scanf("%d", &n);
fun(n);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式