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