当“显示”“字符串”元素时给出递归定义

问题描述

|| 我有以下功能:
convertToStr :: [Int] -> String
convertToStr [] = []
convertToStr (int:ints)
    | length (int:ints) == 1 = ((show (head (drop 0 (int:ints)))) ++ \",\")
    | length (int:ints) == 2 = ((show (head (drop 0 (int:ints)))) ++ \",\") ++ ((show (head (drop 1 (int:ints)))) ++ \",\")
从上面可以看出,我已经设法从此输入中获取以下输出:
> convertToStr [3,5]
\"3,5,\"
但是,我似乎对能够编写递归定义感到困惑。我想将
[Int]
个元素中任意长度的列表转换为带有该列表的字符串,而不是仅限于此。     

解决方法

        没有显式递归,您可以使用
map
并像这样散布
convertToString :: [Int] -> String
convertToString = concat . (intersperse \",\") . map show
编辑:手动递归就像
cts [] = \"\"
cts (x:xs)
   | null xs = show x 
   | otherwise = show x ++ \",\" ++ cts xs
    ,        首先,您的功能有点混乱。我建议您看一下一些用于您的任务的库函数。我建议
intercalate
,它使用列表(字符串)的列表,在它们之间放一些东西(如
\",\"
),然后将它们连接起来。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...