2015-04-29 2 views
1

Итак, я пытаюсь написать рекурсивную функцию, в которой вы можете ввести номер треугольника, например. 5 и он возвращает ответ 15. Я могу использовать это, чтобы вывести правильный ответ:Как я могу написать функцию треугольника рекурсивно?

triangle n = n * (n + 1) `div` 2 

Но как я мог бы сделать это рекурсивно?

+2

Зачем вам это нужно рекурсивно? – kraskevich

+0

Well ive только начал изучать рекурсию, и это было что-то, что я натолкнулся на это, было бы интересно посмотреть, как это можно сделать. – HazardAGuess

+0

Мышление это решение, которое ищет проблему, а не наоборот. – zcleghern

ответ

5
triangle 0 = 0 
triangle n = n + triangle (n-1) 

Но почему?

+4

Потому что вы хотите! Потому что ты хочешь! [Э-э, жаль, что ...] – MathematicalOrchid

0
triangle :: Integer -> Integer 
triangle n = recTriangle n 0 
    where 
     recTriangle 0 acc = acc 
     recTriangle n2 acc = recTriangle (n2-1) (acc+n2) 

Если вы хотите рекурсию хвоста, то это он. (Ваша первоначальная попытка еще лучше.)

Смежные вопросы