栈有一个重要应用是在程序设计中实现递归。递归是计算机 科学和数学中一种解决问题的及其重要的方法。在数据结构中,可以用它来设计简单。易于理解的算法,特别是在一些具有递归定义的结构上设计算法。
递归的概念
一个直接或间接地调用自己的函数,称作递归函数。递归是程序设计中一个强有力的方法
递归函数和运行时栈
栈还有一个重要应用就是在程序设计语言中实现函数调用。当一个函数在运行期间调用另一个函数时,在运行被调用函数之前,系统需要将实际参数和返回值地址等数据传递给被调函数,当函数调用时,这些数据与局部变量一起构成一条“工作记录”,被压入系统提供的栈
int fact(int w)
{
if(w==0)
return 1;
else
t=fact(w-1)
return (w*t);
}
void Hanoi(int n,char A,char B,char C)
{
if(n>0) //n=0是最小子问题,不做任何动作,直接退出
{
Hanoi(n-1,A,C,B); //子问题①:将A上面的n-1个盘子移到B上
Move(A,n.C); //将编号为n的圆盘从A移到C
Hanoi(n-1,B,A,C); //子问题②:将B上的n-1个盘子移到C上
}
}
long Fib(int n)
{
if(n==1||n==2)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
long FibIter(int n)
{
long oneback,twoback,current;
oneback=1;
twoback=1;
if(n==1||n==2)
return 1;
else
{
for(int i=0;i<n;i++)
{
current=oneback+twoback;
twoback=oneback;
oneback=current;
}
}
return current;
}