尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【算法】递归(成员变量和按值传递的不同用法)

【算法】递归(成员变量和按值传递的不同用法)
📅 发布时间:2026/7/19 7:24:54

例题1:


解法一:path作为成员变量传递,需要回溯。

classSolution{intaim,path,ret;public:intfindTargetSumWays(vector<int>&nums,inttarget){aim=target;dfs(nums,0);returnret;}voiddfs(vector<int>&nums,intpos){if(pos==nums.size()){if(path==aim)ret++;return;}path+=nums[pos];dfs(nums,pos+1);path-=nums[pos];path-=nums[pos];dfs(nums,pos+1);path+=nums[pos];}};

解法二:path作为参数传递下去,每层递归会自动帮我们回溯(函数压栈的原理)

classSolution{intaim,ret;public:intfindTargetSumWays(vector<int>&nums,inttarget){aim=target;dfs(nums,0,0);returnret;}voiddfs(vector<int>&nums,intpos,intpath){if(pos==nums.size()){if(path==aim)ret++;return;}dfs(nums,pos+1,path+nums[pos]);dfs(nums,pos+1,path-nums[pos]);}};

注意:当所有递归层需要维护同一份路径,或者复制成本较高时最好设为成员变量。
当变量数据较小,而且每条递归路径都需要独立副本时,适合按值传递。

例题二:


解法一:成员变量

classSolution{vector<string>ret;string path;public:vector<string>binaryTreePaths(TreeNode*root){if(root==nullptr)returnret;dfs(root);returnret;}voiddfs(TreeNode*root){size_t oldSize=path.size();path+=to_string(root->val);if(root->left==nullptr&&root->right==nullptr){ret.push_back(path);path.resize(oldSize);return;}path+="->";if(root->left)dfs(root->left);if(root->right)dfs(root->right);path.resize(oldSize);}};

解法二:按值传递

classSolution{vector<string>ret;public:vector<string>binaryTreePaths(TreeNode*root){if(root==nullptr)returnret;string path;dfs(root,path);returnret;}voiddfs(TreeNode*root,string path){path+=to_string(root->val);if(root->left==nullptr&&root->right==nullptr){ret.push_back(path);return;}path+="->";if(root->left)dfs(root->left,path);if(root->right)dfs(root->right,path);}};

相关新闻

  • 数字媒体技术学习路径与核心知识点解析
  • 论文降重越改越高、语句崩坏?2026正确降重逻辑|Okbiye无痕降重保质量
  • NVIDIA Nemotron-3模型部署与Bun运行时Rust重写技术解析

最新新闻

  • 终极指南:如何用ClearerVoice-Studio免费实现专业级AI语音处理
  • 同余及乘法逆元
  • TMS320F28003x DCSM安全模块:嵌入式代码保护的硬件级实现
  • 技术面试全攻略:从准备到实战的系统方法论
  • OpenAI kbd-1.0-codex-micro AI键盘:本地化智能编程助手实践指南
  • Android多APK适配方案:解决设备碎片化难题

日新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号