2015-07-14 2 views
1

Я не мог найти ответ, и я работал над этим в течение двух дней, и я в тупике. Я думаю, что меня просто смущает математика. Я пытаюсь написать функцию, которая найдет первые n треугольных чисел.Написание функции для поиска треугольного числа в python 2.7

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 + 1)/2. Какая логика проходит через это? Каждый раз, когда я печатаю формулу (5), например, цикл идет от 1-5, но возвращает тот же самый точный ответ в правой колонке, вплоть до 15. Я не могу сделать это там, где он начнется с 1 , 3, 6 и т.д. с правой стороны.

+2

Линия должна быть 'печать я, '\ т', я * (я + 1)/2',' i' вместо 'n'. –

+0

Вау .. Я чувствую себя действительно глупым для такой маленькой ошибки. Я не думаю, что когда-либо доберусь до продвинутого уровня, но мне действительно нравится кодирование, даже если я сосать его. Но это сработало. Это на самом деле имеет немного больше смысла. –

+2

Улучшение работы программиста означает более быстрый поиск и исправление ошибок, не обязательно делая меньше ошибок. Кроме того, попробуйте сделать новые ошибки, это лучшее, на что вы можете надеяться (c: –

ответ

0

Я полностью забыл о треугольных номерах, спасибо за вопрос! Я рад, что вы знаете правильное решение. Мне было интересно, если это можно было бы сделать по-другому:

def triangular(number): 
    return number + triangular(number-1) if number else 0 

print triangular(5) 

Если вы представляете себе вызов, вы могли бы попытаться решить эту проблему. Заявление о печати здесь и там поможет вам определить, что происходит.

1

Комментарий, в котором указано, что вы вычисляете 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 
0

Это не ответ на этот вопрос. Поэтому удалите его, как только вы его прочитаете.

Это ответ для печати

# 
## 
### 
#### 
##### 
###### 

на консоли.

Follwing код для него:

var strng=""; 
    for (var i=1; i<7; i++) 
    { 
     for (var j=1; j<=i; j++) 
     { 
      strng=strng+"#"; 
     } 
     strng=strng+"\n"; 
    } 

    console.log(strng); 
Смежные вопросы