C函数的递归调用

操作方法

  • 01

    递归的基本原理。 为了详细说明递归的使用方法,我们先来看一个例子。

  • 02

    程序中main()函数调用up_and_down()函数,可以称为第1级递归,然后up_and_down()函数调用其本身,称为第2级递归,第2级递归调用第3级递归,依此类推。为了深入程序的调用过程,在打印语句中显示了变量n的值及其内存地址&n,printf()函数使用%p格式显示变量的地址。

  • 03

    递归的具体工作过程。 首先main()函数使用参数1调用函数up_and_down(),因此up_and_down()中形式参量的值为1,故打印语句#1输出level 1。由于n的值小于4,所以在up_and_down()中(这是第1级递归)使用参数n+1即数值2调用了up_and_down()(这是第2级递归)。在第2级调用中n的值被赋为2,因此打印语句#1输出的是level 2。与此类似,下面两次调用语句#1分别打印level 3和level 4。 当开始执行第四级调用时,n的值是4,因此,if语句的条件不满足,这时不再调用up_and_down()函数,接着执行打印语句#2,即输出LEVEL 4。下面函数执行return语句,此时第4级递归调用结束,把控制返还给该函数的调用函数,也就是第3级调用函数。第3级调用中前一个执行过的语句是if语句中的第4次调用,因此它继续执行其后续的代码,执行打印语句#2,输出LEVEL 3。当第3级调用结束后,第2级调用函数继续执行后续代码,输出LEVEL 2,依此类推。 需要注意的是,每一次递归调用函数都产生其局部变量,可以通过察看变量的地址知道。由于系统不同可能得到的地址值不同,但是同一级递归中,函数调用时的变量地址和最后函数返回时的变量地址是一样的。

  • 04

    递归的基本要点。 第一,每一级的函数调用都有自己的变量。例子中第1级调用的n不同于第2级调用的n,因此程序创建了4个独立的局部变量,名字都是n,但分别具有不同的值,每一个变量的有效范围只是它所在的那个函数,这次调用结束后变量也被清除,这一点与普通的函数调用是一样的。

  • 05

    第二,每一次函数调用都会有一次返回。当程序流程执行到某一级递归的结尾处时,就会返回到其前一级继续执行。程序不能直接返回到main()函数中的初始调用处,而是通过递归的每一级逐步返回。

  • 06

    第三,递归函数中,位于递归调用语句之前的语句与各级递归中的被调用函数具有相同的执行次序。例如,在前面的例子中,打印语句#1位于递归调用语句之前,它按递归调用的次序被执行了4次,分别是第1级,第2级,第3级,第4级。

  • 07

    第四,递归函数中必须包含可以终止递归调用的语句。通常情况下,递归函数可以使用一个if语句或其他类似语句以便当函数参数达到某个特定值时结束递归调用。例如前面例子中,up_and_down(n)函数以n+1为实际参数调用调用其本身,当实际参数的值达到4时,条件语句if(n<4)得不到满足而结束递归。

(0)

相关推荐

  • 函数的递归调用求解n的阶乘(n!)

    用C语言编程求得n的阶乘,下面详细介绍. 操作方法 01 新建一个工程和.c文件 02 输入主函数和头文件,并定义变量类型 03 输入n的值 04 用一个while语句去判断n的正负,若为负数则重新输 ...

  • C语言函数的递归和调用

    C语言的递归函数是比较常用功能,下面小编就给大家介绍C语言的递归函数如何调用. 操作方法 01 首先在Visual Studio 中新建C语言项目,并且在源文件下面新建C语言文件,如下图所示 02 然 ...

  • GPU图形与shader:[6]CG表达式与控制语句

    按照操作符的功能可以划分为:关系操作符.逻辑操作符.条件操作 符. 关系操作符 01 关系操作符,用于比较同类型数据(不同类型的基础数据需要进行类型转换,不同长度的向量,不能进行比较)之间的大小关系或 ...

  • matlab怎么调用自定义函数

    有时候我们在使用matlab的时候,想调用自定义函数,怎么调用呢,下面来分享一下方法 操作方法 01 第一步在matlab中创建了一个自定义函数test_data,并将test_data函数放在当前文 ...

  • C语言如何调用数学函数

    现在我们来看看,C语言如何调用数学函数. 操作方法 01 首先,我们在头文件中编写如图语句. 02 或者我们也可以这样编写. 03 这时我们便可以在代码中调用. 04 并且系统还会给我们相应的提示. ...

  • C语言函数的调用

    在一个程序的编写过程中,随着代码量的增加,如果把所有的语句都写到 main 函数中,一方面程序会显得的比较乱,另外一个方面,当同一个功能需要在不同地方执行时,我们就得再重复写一遍相同的语句.此时,如果 ...

  • MATLAB怎么调用函数和使用函数

    在MATLAB中有许多自带函数供我们使用,如果这些函数功能不够,我们还可以自定义函数并进行调用,下面分享给大家MATLAB调用函数和使用函数的方法.步骤,希望能够帮助大家. 操作方法 01 第一步:M ...

  • matlab中一个函数怎么调用另外一个函数

    有时候我们在进行matlab编程的时候,想一个函数调用另外一个函数,怎么操作呢,下面来分享一下方法 方法一:主函数调用子函数 01 第一步在matlab中新建一个m文件函数 Untitled2(), ...

  • python如何调用函数

    python调用函数根据函数的类型不同,一般在调用时略有不同,具体可以参考以下内容. 一.内置函数直接调用 01 内置函数,一般都是因为使用频率比较频繁或者是元操作,所以通过内置函数的形式提供出来,这 ...