2008
08-18

#include<stdio.h> 
void fun(int x) 
 {
  if(x/2>0)   fun(x/2); 
  printf(“%d ”,x); 
 } 
main() 
 {
  fun(3);   
  printf(“\n”);
 }
答案1 3 怎么出来的啊?解释最好详细点。。谢谢


请教问题》有 1 条评论

  1. whos 说:

    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

留下一个回复