C 语言递归类型17 Mar 2025 | 5 分钟阅读 本节将讨论C编程语言中不同类型的递归。递归是一个函数调用自身多达n次的过程。如果一个程序允许用户在同一函数内递归地调用一个函数,这个过程就称为函数的递归调用。此外,一个递归函数可以在同一个程序中直接或间接地调用自己。 递归函数的语法 在上面的语法中,main() 函数只调用一次递归函数。之后,递归函数会根据定义的条件调用自身,如果用户没有定义条件,它会无限次地调用同一函数。 ![]() 不同类型的递归以下是C编程语言中递归的类型:
直接递归当一个函数在同一个函数内重复调用自己时,这被称为直接递归。 直接递归的结构 在上面的直接递归结构中,外部的 fun() 函数递归地调用内部的 fun() 函数,这种类型的递归被称为直接递归。 让我们编写一个程序来演示C编程语言中的直接递归。 Program2.c 输出 0 1 1 2 3 5 8 13 21 34 间接递归当一个函数被另一个函数以循环方式相互调用时,该函数被称为间接递归函数。 间接递归的结构 在这个结构中,有四个函数:fun1()、fun2()、fun3()和fun4()。当fun1()函数执行时,它会调用fun2()来执行。然后,fun2()函数开始执行并调用fun3()函数。通过这种方式,每个函数都会引导到另一个函数,使它们的执行形成一个循环。这种方法被称为间接递归。 让我们编写一个程序来演示C编程语言中的间接递归。 Program3.c 输出 2 1 4 3 6 5 8 7 10 9 尾递归如果一个函数进行递归调用,并且该递归调用是函数执行的最后一条语句,那么这个递归函数就称为尾递归。之后,没有其他函数或语句需要调用该递归函数。 让我们编写一个程序来演示C编程语言中的尾递归。 Program4.c 输出 Number is: 7 Number is: 6 Number is: 5 Number is: 4 Number is: 3 Number is: 2 Number is: 1 非尾/头递归如果一个函数进行递归调用,并且该递归调用是函数中的第一条语句,那么这个函数就称为非尾递归或头递归。这意味着在递归调用之前不应有任何语句或操作。此外,头递归在递归调用时不执行任何操作,所有操作都在返回时完成。 让我们编写一个程序来演示C编程语言中的头/非尾递归。 Program5.c 输出 Use of Non-Tail/Head Recursive function 1 2 3 4 5 线性递归如果一个函数在每次运行时只对自己进行一次调用,并且其增长与问题的大小成线性比例,那么这个函数就称为线性递归。 让我们编写一个程序来演示C编程语言中的线性递归。 Program6.c 输出 The maximum number is: 35 树递归如果一个函数在递归函数内部对自己进行一次以上的调用,那么这个函数就称为树形递归。 让我们编写一个程序来演示C编程语言中的树形递归。 Program7.c 输出 Use of Tree Recursion: The Fibonacci number is: 13 |
简介 在 C 编程中,全局变量是声明在任何函数之外且可以被程序中任何函数访问的变量。与只能在其自身函数内访问的局部变量不同,全局变量对整个程序可见。在...
阅读 6 分钟
在本文中,我们将讨论 C 语言中的函数间通信,包括其语法、示例和应用。什么是函数间通信?当程序中调用一个函数时,调用函数首先调用被调用函数,然后执行函数定义,然后返回到...
5 分钟阅读
字符串连接是将两个字符串组合成一个字符串的过程。如果有两个字符串,则第二个字符串将附加到第一个字符串的末尾。例如:Hello + javaTpoint = Hello javaTpoint 我们可以通过以下方式连接字符串...
阅读 3 分钟
在编程领域,效率和准确性是良好代码的关键要素。在进行数学计算时,精度尤为重要。C提供了强大的内置函数fabs(),以确保使用浮点数进行精确计算。无论原始符号如何,fabs()函数...
阅读 3 分钟
二次方程是次数为2的多项式方程。它表示为ax2 + bx +c = 0,其中a、b和c是方程的系数变量。二次方程的通用规则定义为“a”的值不能为零……
阅读 3 分钟
编程场景经常需要我们修改数字以产生所需的结果。交换数字的首位和末位就是一个例子。尽管此过程乍一看可能很简单,但只有通过有条理的方法才能实现准确性。在本文中,我们将...
阅读 4 分钟
矩阵广泛应用于物理、工程和计算机科学等各个领域。在 C 编程语言中,矩阵用于表示和操作多维数据数组。以下是一些可能需要在 C 语言中使用矩阵的示例:图像处理:矩阵...
阅读 4 分钟
当其各位数字的阶乘之和等于该数字时,该数字可以被认为是强数。例如,145 是一个强数。让我们通过一个例子来理解。检查数字是否为强数的程序。#include <stdio.h> int main() { ...
阅读 4 分钟
教程 编译器 程序 数组 结构 面试题 | C 语言编程示例 C 语言程序经常在面试中出现。这些程序可能来自基础、数组、字符串、指针、链表……
阅读 3 分钟
入口控制循环首先在入口点检查终止状态。如果满足终止条件或测试表达式,则控制转移到 while 或 for 循环的主体。这种循环类型通常控制“while”和“for”循环的入口。作为...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India