# C 程序：使用递归查找自然数之和

> 原文： [https://www.programiz.com/c-programming/examples/natural-number-sum-recursion](https://www.programiz.com/c-programming/examples/natural-number-sum-recursion)

#### 在此示例中，您将学习使用递归函数查找自然数之和。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 用户定义的函数](/c-programming/c-user-defined-functions)
*   [C 递归](/c-programming/c-recursion)

* * *

正数 1、2、3 ...称为自然数。 下面的程序从用户处获取一个正整数，然后计算得出给定数字的总和。

访问此页面以使用循环查找[自然数之和](https://www.programiz.com/c-programming/examples/sum-natural-numbers)。

* * *

## 使用递归的自然数之和

```c
#include <stdio.h>
int addNumbers(int n);
int main() {
    int num;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    printf("Sum = %d", addNumbers(num));
    return 0;
}

int addNumbers(int n) {
    if (n != 0)
        return n + addNumbers(n - 1);
    else
        return n;
} 
```

**输出**

```c
Enter a positive integer: 20
Sum = 210 
```

* * *

假设用户输入了 20。

最初，从`main()`调用`addNumbers()`，并传递 20 作为参数。

数字 20 被添加到`addNumbers(19)`的结果中。

在从`addNumbers()`到`addNumbers()`的下一个函数调用中，传递了 19，该值被添加到`addNumbers(18)`的结果中。 该过程一直持续到`n`等于 0。

当`n`等于 0 时，没有递归调用。 这最终将整数和返回给`main()`函数。