我在编写递归函数时遇到问题。
三角形数如下:
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/