数据结构:第5章 递归.pptVIP

  • 3
  • 0
  • 约 55页
  • 2021-11-14 发布于安徽
  • 举报
数据结构:第5章递归

int fun(int n=2) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 执行1,4句,由于第4句递归,中断地址d4:fun(n-1) 和参数n=2入栈。然后调用fun(1). 栈: 2 d4 3 d3 4 d2 5 d1 int fun(int n=1) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 执行1,2句,函数fun(1)=1结束,返回时,从栈退出栈顶元素获得返回地址d4, 并将参数n恢复为2, 继续执行函数fun(2)(从地址d4处继续) 栈: 2 d4 3 d3 4 d2 5 d1 int fun(int n=2) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 执行1,2句,函数fun(1)=1结束,返回时,从栈退出栈顶元素获得返回地址d4, 并将参数n恢复为2, 继续执行函数fun(2)(从地址d4处继续), 其中fun(n-1)=1 栈: 2 d4 3 d3 4 d2 5 d1 int fun(int n=2) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 继续执行4句:return (1*2), 函数fun(2)=2结束,返回时,从栈退出栈顶元素获得返回地址d3, 并将参数n恢复为3, 继续执行函数fun(3)(从地址d3处继续) 栈: 3 d3 4 d2 5 d1 int fun(int n=3) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 继续执行4句:return (1*2), 函数fun(2)=2结束,返回时,从栈退出栈顶元素获得返回地址d3, 并将参数n恢复为3, 继续执行函数fun(3)(从地址d3处继续),其中fun(n-1)=2 栈: 3 d3 4 d2 5 d1 int fun(int n=4) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 继续执行4句:return (2*3), 函数fun(3)=6结束,返回时,从栈退出栈顶元素获得返回地址d2, 并将参数n恢复为4, 继续执行函数fun(4)(从地址d2处继续) 栈: 4 d2 5 d1 int fun(int n=5) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/ return ( fun(n-1)*n ); /*语句4*/ } 继续执行4句:return (2*3), 函数fun(3)=6结束,返回时,从栈退出栈顶元素获得返回地址d2, 并将参数n恢复为4, 继续执行函数fun(4)(从地址d2处继续) 栈: 4 d2 5 d1 int fun(int n=5) { if (n==1) /*语句1*/ return 1; /*语句2*/ else /*语句3*/

文档评论(0)

1亿VIP精品文档

相关文档