c - 编写递归函数

标签 c algorithm recursion

我在编写递归函数时遇到问题。

三角形数如下:

1 = 1

3 = 1 + 2

6 = 1 + 2 + 3

10 = 1 + 2 + 3 + 4

15 = 1 + 2 + 3 + 4 + 5

21 = 1 + 2 + 3 + 4 + 5 + 6

等等

级数从 1(第一个三角形数)开始。要计算第 n 个三角数,n 为 添加到之前的三角形数。例如计算第四个三角数 将 4 添加到第三个三角形数(即 6),即 10 = (1 + 2 + 3) + 4。

到目前为止,这就是我的想法:

int triNum(n)
{
    if (n<=1)
        return n;

    int num = 0;

    for (int i = 0; i < n; i++)
    {
        num = n + triNum(n-1)
    }
    return num;
}

但是我不确定这是否是正确的答案,有人可以帮助指导我如何解决这个问题吗?

最佳答案

这里产生所需的输出:

int tri(int n) {
    if (n < 1) return 1;
    return (n+1) + tri(n-1);
}

你可以这样测试:

int main(void){
    for (int i=0; i<10; i++) {
        printf("%d: %d\n",i,tri(i));
    }
    return 0;
}

关于c - 编写递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900419/

相关文章:

java - 坚持使用 Java 的递归方法?

c - 为什么在此 C 代码中会发生堆栈粉碎?

java - 分而治之的数组中的最大值

algorithm - 如何在O(n^2)时间内实现在线构造Convex Hull?

c - 选择排序递归函数的段错误

c - 使用递归查找数组的最小元素

C 图片库

c - 如何在 Linux x86 上使用 C 语言对蓝牙 LE 设备进行编程?

c - 从文件(未知长度)读取时如何正确 malloc 和 free char**?

c++ - 位图边界矩形算法 C++