#include<stdio.h>
void fun(int x)
{
if(x/2>0) fun(x/2);
printf(“%d ”,x);
}
main()
{
fun(3);
printf(“\n”);
}
答案1 3 怎么出来的啊?解释最好详细点。。谢谢
>> 本文固定链接: http://www.vcgood.com/archives/2634
#include<stdio.h>
void fun(int x)
{
if(x/2>0) fun(x/2);
printf(“%d ”,x);
}
main()
{
fun(3);
printf(“\n”);
}
答案1 3 怎么出来的啊?解释最好详细点。。谢谢
>> 本文固定链接: http://www.vcgood.com/archives/2634
你必须先 登录才能发表评论。
void fun(int x)
{
if(x/2>0) fun(x/2);
printf(“%d ”,x);
}
函数fun()中再次调用fun(),是递归调用。
程序第一次调用fun()时,x=3,3/2=1>0,所以第二次调用fun(),传递参数为3/2=1。
第二次调用函数为fun(1),因为1/2=0,所以执行 printf(“%d ”,x),即输出此时x的值,1。
第二次fun()函数调用完成之后则返回到第一次fun()函数调用,继续执行第一次调用的函数里的代码 printf(“%d ”,x),即输出此时x的值,3。
之后则返回到主函数中执行代码 printf(“\n”); 输出一个换行,然后程序结束。
输出结果为:1 3