递归调用
main()
{void outd(long int x);
long int a;
printf("a=?");
scanf("%ld",&a);
if(a<0) a=-a;
outd(a);
}
void outd(long int x)
{if(x>=10) outd(x/10);
printf("%5d",x%10);
}
请问一下 在被调部分 outd函数的执行过程是怎么样的?
譬如我给一个数字***********,书上的结果是:1,2,3,4,5,6,7,8
我想不通被调部分经过递归以后不是剩下1了其他的数字怎么来的?
参考答案:假如你输入68,那会不会打印2呢?
第一次传参数是68,它会在"if(x>=10) outd(x/10);"这句话停住不向下进行,而调用自己,它下边的那句话早晚会执行的,就是递归结束后.
第一次传参数是68,在"if(x>=10) outd(x/10);"这句话调用自己,传参数6,在第二次调用时就不在调用自己了,打印6,然后出来,继续做后边的,打印68%10也就是8
你只是认为在最后一次递归调用是才会打印,其实最后一次打印完成还会一层一层退出