0
所以,我有这个功能,旨在对齐左侧的文本而不用切词(只有空格)。然而,我的问题是,我无法找到函数的停止条件,并且它无限。在递归函数上停止条件 - Haskell
f n "" = "" --weak condition
f n s = if n >= ((maximum . map length . words) s) then if (s !! n == ' ' || s !! n == '\t' || s !! n == '\n')
then take n s ++ "\n" ++ (f n (drop n s)) else f (n-1) s
else error "Try bigger width!"
好了,基本上如果n大于最长的字小,然后它会提示错误,否则'削减'在白色空间中的字符,直到它到达一个没有空格字符,然后调用本身递归地为n-1
。我也使用putStr
来避免输出中的“\ n”。
但是,正如我所说停止条件太弱或不存在。如果代码中有其他流或可能的优化(例如,如果更少),请告诉。
如何解决在递归中使用的递减n值的问题 – user8