【问题标题】:Function with SUCCSUCC 的功能
【发布时间】:2018-12-10 09:17:01
【问题描述】:

我在这个练习中有一些问题

COTO(0,y)=y
COTO(x+1,y)=SUCC(SUCC(COTO(x, SUCC(y)))

COTO (1,3); COTO (2,2); COTO (3,44) - ?

例如,我知道 SUCC(2) = 3,但我仍然对这个问题没有任何想法。有人可以帮忙吗?可能是 LISP 语言,但 Google 没有答案。

【问题讨论】:

  • 用加工的模式替换 COTO(1,3):这里是第二个模式,X=0 和 Y=3(注意:模式不应该是 COTO(SUCC(X), Y)代替?)。您获得了对 COTO 的递归调用,您应该向其中添加 2(因为您有两个 SUCC 应用程序)。递归调用是 COTO(0,4),它匹配 Y=4 的第一个模式。因此递归调用的结果是 4。你加 2 得到 6。

标签: recursion functional-programming lisp successor-arithmetics


【解决方案1】:

按照匹配的情况,以人类可读的符号书写,

COTO (3,44) =(2)= 2 + COTO (2,45) 
            =(2)= 2 + 2 + COTO (1,46) 
            =(2)= 2 + 2 + 2 + COTO (0,47)
            =(1)= 2 + 2 + 2 + 47
            =     2*3 + (44+3)

因此一般情况下,COTO (n,x) = _ * n + (x + _) = _ * n + _(请填写空白)。

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多