黑马程序员技术交流社区

标题: 函数递归调用 [打印本页]

作者: 军团指挥官    时间: 2015-3-24 10:37
标题: 函数递归调用
  1. #include "stdio.h"
  2. void up_and_down(int);

  3. int main(void)
  4. {
  5.         up_and_down(1);
  6.         return 0;
  7. }

  8. void up_and_down(int n)
  9. {
  10.         printf("Level %d:n location %p\n",n,&n);
  11.         if(n<4)
  12.                 up_and_down(n+1);
  13.         printf("Level %d:n location %p \n",n,&n);
  14. }
复制代码



这是在《C primer plus》中看的一个例子,输出结果为:
Level 1:n location 0xbfcac790
Level 2:n location 0xbfcac770
Level 3:n location 0xbfcac750
Level 4:n location 0xbfcac730
Level 4:n location 0xbfcac730
Level 3:n location 0xbfcac750
Level 2:n location 0xbfcac770
Level 1:n location 0xbfcac790


前面的level1—level4都可以明白,后面的就看不明白怎么回事了,想请看明白的朋友解答一下。感激不尽!

作者: 谢囧    时间: 2015-3-24 10:47
本帖最后由 谢囧 于 2015-3-24 10:52 编辑

up_and_down(n+1);
等于
printf("Level %d:n location %p\n",n+1,&n);
if(n+1<4)
{
        up_and_down(n+1+1);
}
printf("Level %d:n location %p \n",n+1,&n);
以此类推

作者: 佩玉鸣    时间: 2015-3-24 10:47
递归调用,逐次退出子程序
作者: 军团指挥官    时间: 2015-3-27 10:04
看明白了。
作者: 奋斗中啊    时间: 2015-3-31 00:35
不难理解啊
作者: 军团指挥官    时间: 2015-4-3 09:15
奋斗中啊 发表于 2015-3-31 00:35
不难理解啊

当时没看明白。你是准备第几期?
作者: 奋斗中啊    时间: 2015-4-3 12:49
军团指挥官 发表于 2015-4-3 09:15
当时没看明白。你是准备第几期?

8期吧 你呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2