作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 F# 上做一些练习,我有这个计算交替总和的函数:
let rec altsum = function
| [] -> 0
| [x] -> x
| x0::x1::xs -> x0 - x1 + altsum xs;;
val altsum : int list -> int
练习包括只用两个子句声明相同的函数...但是如何做到这一点?
最佳答案
mydogisbox 的答案正确且有效!
但经过一些尝试后,我找到了一个最小且可读的问题解决方案。
let rec altsum2 = function
| [] -> 0
| x0::xs -> x0 - altsum2 xs
例子
altsum2 [1;2;3] essentially do this:
1 - (2 - (3 - 0)
这有点棘手,但可以!
题外话:
另一种解决问题的优雅方法是使用 F# List 库:
let altsum3 list = List.foldBack (fun x acc -> x - acc) list 0;;
在 phoog 的评论之后我开始尝试用尾递归函数解决问题:
let tail_altsum4 list =
let pl l = List.length l % 2 = 0
let rec rt = function
| ([],acc) -> if pl list then -acc else acc
| (x0::xs,acc) -> rt (xs, x0 - acc)
rt (list,0)
这也有点棘手……减法不是可交换的,并且不可能考虑用 List.rev
反转一个长列表……但我找到了一个解决方法! :)
关于recursion - 将递归函数从 3 个子句简化为 2 个子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647694/
我正在使用 Bootstrap 日期时间选择器。我想要 datetimepicker 格式作为短月份名称,例如。 一月。我的代码在下面,它现在显示完整的月份名称为 January。如何让它成为 Jan
注意:这篇博客已经和当前的分页插件完全不一样了,所以建议大家通过上面项目地址查看最新的源码和文档来了解。 以前为Mybatis分页查询发愁过,而且在网上搜过很多相关的文章,最后一个都没采用。在分页
我是一名优秀的程序员,十分优秀!