【发布时间】:2014-06-02 21:55:00
【问题描述】:
我认为这应该相对简单,想知道是否有人知道如何回答这个问题:
定义一个递归函数 seq-min : N+ -> N 返回自然数序列中的最小值。
我在想一些类似的事情......
if hd seq < hd tl seq then seq-min([hd seq] concat tl tl seq)
else if hd seq > hd tl seq then seq-min(tl seq)
else if hd seq = hd tl seq then seq-min(tl seq)
感谢您的帮助!
【问题讨论】:
-
你可以看到这个问题:因为它正在测试值对,并在列表的尾部递归,最终它将传递一个单值序列。那时,“hd tl seq”将失败。下面的答案通过递归传递最小“向下”并仅测试头部来避免对对的需要。
标签: recursion sequence formal-methods vdm++ vdm-sl