递归......有点难理解,尾递归还好,常规的递归真的很难理解。
printf("Level %d: n location %p\n",n,&n);
printf("LEVEL %d: n location %p\n",n,&n);
Level 1: n location 0x7ffdbc113dac #1
Level 2: n location 0x7ffdbc113d8c #2
Level 3: n location 0x7ffdbc113d6c #3
LEVEL 3: n location 0x7ffdbc113d6c #4
LEVEL 2: n location 0x7ffdbc113d8c #5
LEVEL 1: n location 0x7ffdbc113dac #6
1~4条的输出结果很好理解。但5~6条的无法理顺。姑且理解为递归的规律,可以这样解释。
因为在主函数中调用函数 n的值1,但当输出第4条语句时 由于up_and_down函数直接调用了直接,n变成了3,所以当函数自身调用结束后,控制权返回给了主函数,所以n的值需要变成1,所以n值为2,打印LEVEL 2, n值为1 打印LEVEL 1. 还是无法理解。。。希望后续学到二叉树时可以发现其中的规律。。