繁体   English   中英

编写一个函数来在python 2.7中找到一个三角形数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM