递归原理

C Primer Plus 第9章 函数 9.3 递归

情到浓时终转凉″ 提交于 2020-03-01 06:13:05
9.3.1 递归的使用 为了具体说明,请看下面的例子。程序清单9.6中函数main()调用了函数up_and_down()。 我们把这次调用称为“第一级递归”。然后up_and_down()调用其本身,这次调用叫做“第二级递归”。 第2级递归调用第3级递归,依此类推。为了深入其中看看究竟发生了什么, 程序不仅显示出了变量n的值,还显出出了存储n的内存的地址&n(本章稍后部分将更全面的讨论&运算符。 printf()函数使用%p说明符来指示地址 )。 程序清单9.6 recur.c程序 /*recur.c --递归举例*/ #include <stdio.h> void up_and_down(int); int main(void) { up_and_down(1); return 0; } void up_and_down (int n) { printf("Level %d : n location %p\n",n,&n); /*1*/ if(n<4) up_and_down(n+1); printf("Level %d : n location %p\n",n,&n); /*2*/ } 我们来分析程序中递归的具体工作过程。首先main()使用参数1调用了函数up_and_down()。于是up_and_down()中形式参量n的值为1,故打印语句#1输出了Leve 1。 然后