Recursion 成功的功能

Recursion 成功的功能,recursion,functional-programming,lisp,successor-arithmetics,Recursion,Functional Programming,Lisp,Successor Arithmetics,我对这个练习有一些问题 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语言,但没有来自谷歌的答案。通过匹配的案例,以人类可读的符号书写 COTO (3,44) =(2)= 2 + COTO (2,45) =(2)= 2 + 2 + COT

我对这个练习有一些问题

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语言,但没有来自谷歌的答案。

通过匹配的案例,以人类可读的符号书写

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+(请填写空格)。

通过匹配的案例,以人类可读的符号书写

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+(请填写空格)。

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