C语言递归算法?

2020-07-10 财经 79阅读

递归调用是先返回最内层的函数,执行最内层调用语句的后面的代码后返回当前层次的函数调用。要立体的看递归,不能直线思维。

age(3);//这一句执行的过程:

  1. x==3,因为x!=0,所以进入if语句块中,执行age(x-1);//等age(x-1);返回后还要执行下一行代码printf("%d\n",x);

  2. 也就是再次调用age这个函数,这次是x==3时的age函数中调用x==2时的age函数,此时传入的参数是2,进入age函数内执行过程如下:

  3. x==2,因为x!=0,所以进入if语句块中,再次执行age(x-1);同上,此时传入的参数是1,

  4. x==1,因为x!=0,所以进入if语句块中,再次执行age(x-1);同上,此时传入的参数是0,

  5. x==0,所以不进入if内部了,直接结束了这次的age函数,开始执行age(x-1);函数的下一行

  6. printf("%d\n",x);此时的x==1,所以输出1.然后此次的age(x-1);函数调用结束,继续执行此次

  7. age(x-1);函数的下一行printf("%d\n",x);此时x==2,所以输出是2,同理还要输出一次3.输出3的时候就是最开始调用age(3)的这次。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com