对树、图进行 遍历时,包括 前序、中序、后序、深度搜索、广度搜索
存在一些参数,可以用
1. 全局变量表示,递归结束后必须对该变量修改,恢复原值
2. 普通函数参数,因为递归调用函数时,实际上,从内存分布上看,每一层调用都保存了该层函数的参数,因此递归返回上层时,不会影响原参数值
1. 全局变量表示
int currentSum = 0;
vector<Node *> path;
void traverse(Node *root, int expectedNum) {
currentSum += root->value;
path.push_back(root);
if(root->left == NULL && root->right == NULL) {
if(currentSum == expectedNum) {
show(path);
cout << currentSum <<endl;
}
}
if(root->left != NULL)
traverse(root->left, expectedNum);
if(root->right != NULL)
traverse(root->right, expectedNum);
[color=red]currentSum -= root->value; // 必须恢复,所有函数调用使用同一个值
path.pop_back();[/color]
}
2. 普通函数参数
void traverse(Node *root, int currentSum, vector<Node *> path, int expectedNum) {
currentSum += root->value;
path.push_back(root);
if(root->left == NULL && root->right == NULL) {
if(currentSum == expectedNum) {
show(path);
cout << currentSum <<endl;
}
}
if(root->left != NULL)
traverse(root->left, currentSum, path, expectedNum);
if(root->right != NULL)
traverse(root->right, currentSum, path, expectedNum);
// 不必恢复 currentSum, path,各函数调用层独立使用
}
分享到:
相关推荐
### 408函数-递归调用-全局变量和局部变量 #### 一、CLion环境下新建文件及函数管理 在CLion环境下新建文件,尤其是C/C++源文件,对于项目的组织和代码的管理非常关键。为了提高编程效率和调试效果,我们需要遵循...
C语言函数的嵌套调用和递归调用 本文主要介绍C语言函数的嵌套调用和递归调用,包括函数的递归调用、变量的作用域和存储类型等知识点。 函数的递归调用 函数的递归调用是指函数直接或间接地自我调用的一种调用方式...
在这个例子中,每次递归调用都会增加全局变量`count`的值,从而追踪调用次数。当计算Succ(n)时,最后会返回函数的计算结果以及`count`的值,显示递归调用的次数。 计算递归函数调用次数有助于分析算法的时间复杂度...
程序员还必须确保递归函数不会随意改变静态变量和全局变量的值,以避免在递归下降过程中的上层函数出错。 递归调用可以解决许多问题,如求和、阶乘、斐波那契数列等。例如,求 1+2+⋯ ⋯ +100 的和,可以使用递归...
然而,对于初学者来说,掌握C语言的一些核心概念仍然存在一定的难度,尤其是在处理函数的递归调用、局部变量与全局变量的区别以及指针的使用等方面。本文旨在深入探讨C语言中的局部变量和全局变量,通过具体的例子和...
C语言函数的嵌套调用和递归调用 本学习教案主要介绍了C语言函数的嵌套调用和递归调用,包括函数的递归调用概念、变量的作用域和存储类型等知识点。 一、函数的递归调用 递归函数是指函数直接或间接地自我调用的...
通过本资源摘要信息,读者可以了解C语言程序设计中函数的概念和应用,并且可以更好地理解函数的定义、参数、调用、嵌套调用、递归调用、数组作为函数参数、局部变量和全局变量、变量的存储类别、内部函数和外部函数...
本实验报告主要涉及C语言的函数和编译预处理,旨在帮助初学者掌握函数定义、函数调用、全局变量和局部变量、动态变量、静态变量的概念和使用方法,以及多文件程序的编译和运行。 一、函数定义和调用 函数是C语言中...
通过以上实验,你可以深入理解 Python 中函数的定义、使用、参数传递和变量作用域,以及递归调用的概念。同时,你还将学会如何利用随机数进行模拟运算,这在数据分析和游戏开发等领域都有广泛的应用。
4.7 函数的递归调用 函数可以调用自身,这就是递归。但必须确保存在递归基,即最终能终止递归的情况,否则会导致无限递归。 4.8 编译预处理 预处理器在编译阶段处理`#include`、`#define`等指令,完成文本替换和...
通过上述讲解,我们已经了解了它们在作用域链中的查找机制,递归调用的逻辑流程,以及如何使用递归来实现斐波那契数列。这些知识不仅适用于JavaScript,也是通用的编程原理,值得深入学习和实践。
首先,函数的定义是使用关键字def开始的,后跟函数名和圆括号内的参数列表,参数之间以逗号分隔,如果没有参数则括号内为空。函数体由冒号开始,后跟缩进的多条语句。例如,一个计算阶乘的函数可以这样定义: ```...
在本实验中,我们使用了全局变量和局部变量来实现不同的功能。 五、数组和矩阵 数组是指一组相同类型的变量的集合。在C语言中,数组可以是一维或多维的。在本实验中,我们使用了一维数组和二维数组来实现不同的...
8.6 函数的递归调用 10 8.7 数组作为函数参数 12 8.8 局部变量和全局变量 17 8.8.1 局部变量 17 8.8.2 全局变量 19 8.9 变量的存储类别 20 8.9.1 动态存储方式与静态动态存储方式 20 8.9.2 auto变量 21 8.9.3 用...
通过本课程,学生将学习如何使用函数实现模块化程序设计,如何定义和调用函数,函数的嵌套调用和递归调用,函数参数和返回值,局部变量和全局变量,变量的生存期和寄存方式等重要概念。 第7.1章节中,课程首先介绍...
函数局部变量 全局变量 及其作用域 #简单类型(int str等)变量的局部变量与全局变量及其作用域的关系 name = xxx #第一级顶头定义的变量都称为全局变量,其作用域从变量定义的位置开始到此程序结束 def Print_Name...
函数的嵌套调用是指在一个函数中调用另一个函数,而递归函数是指函数调用自身的函数。匿名函数是指没有函数名的函数。 Python 中的函数可以分为四种类型:无参数,无返回值的函数;无参数,有返回值的函数;有参数...
在编程领域,函数调用是程序设计中一个关键的概念,它允许我们把一系列相关的操作封装成独立的功能单元,便于重复使用和模块化编程。在这个FORTRAN程序中,我们看到一个内部函数`ifac`被用来计算阶乘(n!),也就是...
本文档是关于函数和预处理命令的知识点总结,涵盖函数的定义、调用、数组作为函数参数、函数的嵌套调用和递归调用、局部变量和全局变量的作用域、变量的存储类别和生存期、函数的存储分类、编译预处理等多个方面的...
本章节总的来说讲述了 C 语言程序设计中的模块化程序设计,包括函数的概念、函数的定义和调用、函数参数和返回值、函数的嵌套调用和递归调用、局部变量和全局变量、动态存储变量与静态存储变量、内部函数和外部函数...