亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 递归

C 递归

在本教程中,您将通过示例学习在 C 编程中编写递归函数。

调用自身的函数称为递归函数。而且,这种技术被称为递归。


递归是如何工作的?

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}
<图>

递归一直持续到满足某个条件来阻止它。

为了防止无限递归,可以在一个分支进行递归调用而另一个不进行递归调用的情况下使用 if...else 语句(或类似方法)。


示例:使用递归的自然数之和

#include <stdio.h>
int sum(int n);

int main() {
    int number, result;

    printf("Enter a positive integer: ");
    scanf("%d", &number);

    result = sum(number);

    printf("sum = %d", result);
    return 0;
}

int sum(int n) {
    if (n != 0)
        // sum() function calls itself
        return n + sum(n-1); 
    else
        return n;
}

输出

Enter a positive integer:3
sum = 6

最初,sum()main() 调用 带有 number 的函数 作为参数传递。

假设,n 的值 sum()里面 最初是 3。在下一次函数调用期间,将 2 传递给 sum() 功能。这个过程一直持续到 n 等于0。

n 等于0,if 条件失败并且 else 部分执行最终返回整数的总和到 main() 功能。

<图>

递归的优缺点

递归使程序优雅。但是,如果性能至关重要,请改用循环,因为递归通常要慢得多。

话虽如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在树遍历等问题中使用递归是很常见的。


C语言

  1. C# Hello World - 你的第一个 C# 程序
  2. C# 关键字和标识符
  3. C# 变量和(原始)数据类型
  4. C# 运算符
  5. C# 位和位移运算符
  6. C# 基本输入和输出
  7. C# 表达式、语句和块(附示例)
  8. C# 注释
  9. C# switch 语句
  10. C# 三元 (? :) 运算符
  11. Java中使用递归和循环程序的斐波那契数列
  12. 如何使用递归在 Java 中反转字符串