C++ Using recursion to process linked list, 深入理解递归的过程(part2)
2014-07-08 10:37
453 查看
为了更加深入的理解递归的过程, 遇到递归的程序的时候, 要学会采用画stack frame的方式理解递归(参见part1)
下面在举一个例子加深理解。
改变递归调用语句的顺序, 结果就是从尾部到头打印数据
在主程序调用printList 函数的时候, 不会先打印出来。 而是在递归调用的时候, 先分配stackframe 保存下当前位置, 在新的stackframe上执行。
此时打印的顺序变成了:
首先打印出来的是Tom, 释放Tom的stackframe, 打印出Mark, 。。。 打印出April。
于是打印的顺序完全反过来了。 变成了Tom Mark April。
不难知道原因。
下面在举一个例子加深理解。
改变递归调用语句的顺序, 结果就是从尾部到头打印数据
在主程序调用printList 函数的时候, 不会先打印出来。 而是在递归调用的时候, 先分配stackframe 保存下当前位置, 在新的stackframe上执行。
此时打印的顺序变成了:
首先打印出来的是Tom, 释放Tom的stackframe, 打印出Mark, 。。。 打印出April。
于是打印的顺序完全反过来了。 变成了Tom Mark April。
不难知道原因。
相关文章推荐
- C++ Using recursion to process linked list, 深入理解递归的过程(part1)
- How to create Linked list using C/C++
- Working on LinkedList Using C#/C/C++
- [C++]LeetCode: 102 Flatten Binary Tree to Linked List (二叉树转前序链表)
- 深入理解ArrayList与LinkedList的区别
- Convert Binary Search Tree (BST) to Sorted Doubly-Linked List -- leap of faith with recursion.
- 递归生成格雷码 gray code generation using recursion(c++)
- 【LeetCode 114】Flatten Binary Tree to Linked List (C++)
- [LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表 C++
- 二叉查找树的个数,BT search 1, 二叉树遍历的非递归形式,Flatten Binary Tree to Linked List
- leetcode_c++:树: Flatten Binary Tree to Linked List(114)
- Convert Sorted List to Binary Search Tree ------C++ 递归创建平衡二叉查找树
- 深入理解ArrayList与LinkedList的区别
- 递归---Flatten Binary Tree to Linked List
- Java 集合深入理解(11):LinkedList
- 深入理解ArrayList 和 LinkedList 区别
- 深入理解ArrayList与LinkedList的区别
- 数据结构之线性表之顺序表和链表(通过数据结构角度深入理解arrayList和linkedList的特性)
- 深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结