You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell实现'#'字符山mountain函数的otherwise分支编写方法

Haskell mountain 函数补全方案

需求回顾

实现mountain :: Int -> String函数,规则如下:

  • 输入整数n为山的高度,输出由#构成的东侧可攀登的山形字符串
  • 从上至下每行的#数量逐行递增1,行与行之间用换行符分隔
  • 输出末尾不得添加多余换行
  • 传入高度为负值时按0处理,返回空字符串

现有代码问题

给出的初始代码存在一处语法错误:高度为2的分支中,判断条件后误用了比较运算符==,需要改为赋值用的单等号=,即修正为| a == 2 = "#\n##"。

otherwise分支实现

按照当前代码的递归写法逻辑,高度为a的山形,等价于高度为a-1的完整山形内容,拼接一个换行符后,再拼接a个连续的#字符即可。直接使用Prelude内置的replicate函数生成指定长度的重复字符,无需引入额外依赖。
补全的分支代码如下:

| otherwise = mountain (a - 1) ++ "\n" ++ replicate a '#'

完整可运行代码

mountain :: Int -> String
mountain a 
 | a < 1 = ""
 | a == 1 = "#"
 | a == 2 = "#\n##"
 | otherwise = mountain (a - 1) ++ "\n" ++ replicate a '#'

正确性验证

  • 输入小于1的值(含负数):例如mountain (-2)、mountain 0均返回空字符串"",符合边界规则
  • 输入3:返回"#\n##\n###",每行#数量逐行+1,换行分隔正确,末尾无多余换行,完全满足需求
  • 输入5:返回"#\n##\n###\n####\n#####",规则匹配正确

内容的提问来源于stack exchange,提问作者maros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:45:16