【发布时间】:2017-10-24 00:28:30
【问题描述】:
我在编写递归函数时遇到问题。
三角数如下:
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;
}
但是我不确定这是正确的答案,谁能帮助指导我应该如何解决这个问题?
【问题讨论】:
-
您是否测试过您的代码?它适用于您的测试用例吗?
-
我会看看在那个 for 循环中发生了什么。
-
旁白:可以直接计算第n个三角形数:
n*(n+1)/2 -
发布的代码没有执行所需的功能。建议用一个简单的语句替换
for()循环:return = n + triNum(n-1)