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 展开
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 展开
1个回答
展开全部
因为代码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);
}
#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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询