合工大数据结构06-递归讲述.pptVIP

  • 23
  • 0
  • 约1.7万字
  • 约 44页
  • 2017-04-17 发布于湖北
  • 举报
* 6.5 递归程序的模拟——转换为非递归 由此流程图得程序如下: void P1( int n ){ stack s ; while ( n 0 ) { s.push ( n ); n = n - 1; } while ( !s.empty( ) ) { s.pop ( n ); cout n; } } stack s; n0 s.push(n); n=n-1; s.empty( )? s.pop (n ); L1: cout n; N Y L0 N Y * 6.5 递归程序的模拟——转换为非递归 例:将下面递归程序转换为等价的非递归程序。 void P(int n ){ if ( n 0 ){ cout n; P( n – 1 ); } } 解: 按转换规则及简化规则 进行转换细节不再赘述, 结果如右图所式: void P1(int W) { stack S; // 规则1 L0: // 规则2 if (n0 ) // 规则5 { coutn; // 规则5 S.push(n); // 规则3.a n=n-1; // 规则3.b goto L0; // 规则3.c L1: // 规则3.d } if (!S.empty( ) ) // 规则4 { S.pop(n); // 规则4.b goto L1; // 规则4.c } } * 6.5 递归程序的模拟——转换为非递归 void P1(int n) { stack s; L0: if (n0 ) { coutn; s.push (n); n=n-1; goto L0; L1: } if (!s.empty( ) ) { s.pop (n); goto L1; } } stack S; n0 coutn; s.push(n); n=n-1; s.empty()? s.pop (n ); L1: N Y L0 N Y * 6.5 递归程序的模拟——转换为非递归 由此流程图得程序如下: void P1(int n) {

文档评论(0)

1亿VIP精品文档

相关文档