四、栈与递归
众所周知,函数递归调用是程序设计的重要方法。栈在实现函数的递归调用中扮演了重要的角色。例如,递归定义阶乘n!函数如下: long factorial(long n) { if (n == 0) return 1; else return n * factorial( n-1) ; // 递归调用 }
n=4时,递归计算时内部栈情况如下 图所示。其中所传递的实参分别用3,2,1,0给出,保存的返回地址分别用①、②、③、④代表,函数值则分别用f=1,f=2,f=6,f=24表示。