【C++】递归调用——难点揭秘

简介: 【C++】递归调用——难点揭秘

   在函数递归调用这一块,很多小伙伴都容易犯迷糊,其实只要关键的一句理解了,那就 noproblem ,today 拿力扣上的一个数据结构题说一下!

class Solution 
 {
 public:
     vector<int> reversePrint(ListNode* head) 
     {
         recur(head);
         return res;
     }
 private:
     vector<int> res;
     void recur(ListNode* head) 
     {
         if (head == nullptr) 
             return;
         recur(head->next);
         res.push_back(head->val);
     }
 };
int main()
{
    //创建链表
  ListNode *n1 = new ListNode(1);            // 节点 head
  ListNode *n2 = new ListNode(3);
  ListNode *n3 = new ListNode(2);
  //  需要构建引用指向
  n1->next = n2;
  n2->next = n3;
  Solution obj;
  vector<int> v1 = obj.reversePrint(n1);         //形参为指针时,传入的参数为地址
  for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
  {
    cout << *it << ' ';
  }
  cout << endl;
  system("pause");
  return 0;
}
输出结果:2 3 1


 关键句也即是第15行,recur(head->next); 只有输入的 head->next 节点为空时,该句执行结束后,才会执行同一等级中的下一条语句(res.push_back(head->val);),然后逐层回溯。只要此处理解了,所谓递归调用也是 so easy!

相关文章
|
5天前
什么是递归函数?怎样实现递归?
什么是递归函数?怎样实现递归?
|
9月前
|
算法
第 11 天_递归 / 回溯【算法入门】
第 11 天_递归 / 回溯【算法入门】
101 0
|
9月前
|
算法
第 10 天_递归 / 回溯【算法入门】
第 10 天_递归 / 回溯【算法入门】
90 0
|
10月前
|
机器学习/深度学习 算法 C语言
函数递归-------套娃套路深,要么你玩递归,要么递归玩你
函数递归-------套娃套路深,要么你玩递归,要么递归玩你
|
11月前
|
缓存 算法 Java
使用迭代优化递归程序
大家好,我是王有志。 今天我们将会分析上篇文章中递归算法存在的问题,并通过迭代去优化。
82 1
使用迭代优化递归程序
算法提炼--递归(3)
算法提炼--递归(3)
算法提炼--递归(4)
算法提炼--递归(4)
算法提炼--递归(2)
算法提炼--递归(2)
算法提炼--递归(1)
算法提炼--递归(1)
|
存储 算法
递归算法设计技术
实验目的 实验内容 实验过程 程序清单 复杂度分析 运行结果
102 0