другие коды для этой рекурсивной функции в списке - PullRequest
1 голос
/ 11 ноября 2011

я написал функцию, чтобы найти позицию следующего столбца asciibox
, например:

+-----++---++---+
|  a  || b || c |
+-----++---++---+

поле b должно начинаться со столбца "псевдокод" {length (box a)}и поле c должно начинаться с псевдокода {поле длины a + поле длины b}

, поэтому я написал эту функцию

f:: [Int]->[Int]->[Int]
f (x:xs) []  = f xs [x]
f  [] ys = ys
f (x:xs) ys = f xs (ys++[x+ last ys])

, которая дает мне то, что я хочу

f [23,24,25] [] 
ghci> [23,47,72]

Я хотел бы знать, возможен ли другой алгоритм.Есть ли какое-нибудь решение с помощью «свернуть» или «развернуть» или, возможно, «повторить»

спасибо

1 Ответ

5 голосов
/ 11 ноября 2011
> scanl (+) 0 [23, 24, 25]
[0,23,47,72]
...