[英]Writing a function to find a triangular number in python 2.7
我无法通过搜索找到答案,我已经为此工作了两天,但被难住了。 我想我只是对数学感到困惑。 我正在尝试编写一个函数来查找前 n 个三角形数。
def formula(n):
i = 1
while i <= n:
print i, '\t', n * (n + 1)/ 2
i += 1
print
例如,如果我输入公式(5),它看起来像这样:
1 1
2 3
3 6
4 10
5 15
我知道如何制作从 1 到我选择的任何数字 n 的表格,但我无法弄清楚如何使第二部分等于我输入的公式 n*(n+1)/2。 这是什么逻辑? 例如,每次我输入公式(5)时,循环从 1-5 开始,但在右侧列中返回相同的确切答案,一直向下,即 15。我无法到达它从 1 开始的位置, 3, 6 等在右手边。
观察到您正在计算n * (n + 1) / 2
而不是i * (i + 1) / 2
是正确的。 您还可以通过观察第 i 个三角形数只是从 1 到 i 的整数之和来摆脱在每一步都必须进行乘法和除法的情况,因此在每一步您只需要将 i 添加到前一个三角形数。 代码如下:
def formula(n):
ith_sum = 0
for i in xrange(1, n+1):
ith_sum += i
print i, '\t', ith_sum
我完全忘记了三角数,谢谢你的问题! 我很高兴您现在知道正确的解决方案。 我很好奇是否可以以不同的方式完成:
def triangular(number):
return number + triangular(number-1) if number else 0
print triangular(5)
如果你喜欢挑战,你可以尝试解决这个问题。 在这里和那里打印声明将帮助您发现正在发生的事情。
这是一个对我有用的简单解决方案
def print_triangular_numbers(n):
for i in range(n+1):
print(i, int(i * (i + 1)/ 2))
print_triangular_numbers(5)
这不是这个问题的答案。 所以一读完就删掉。
这是打印的答案
#
##
###
####
#####
######
在控制台上。
以下是它的代码:
var strng="";
for (var i=1; i<7; i++)
{
for (var j=1; j<=i; j++)
{
strng=strng+"#";
}
strng=strng+"\n";
}
console.log(strng);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.