2013-04-28 88 views
1

我在序言和递归一般新。 由于每个立方体的大小由立方体数表示。例如,total_cube_volume(3,T)将包含3个立方体:第一个立方体每边有1英寸,第二个立方体每边有2英寸,第三个立方体每边有3英寸。因此,这个问题的总量是36.序言和递归

这是我到目前为止,它编译,但是当我问总数(3,T)它答复没有。任何建议都会有帮助。谢谢。

total(0,T). 

total(N,T):- 
    N>0, 
    N1 is N-1, 
    T1 is N*N*N, 
    total(N1,T1), 
    T is T+T1. 

回答

1

您的递归是错误的。你正在计算T1,并将它传递给递归下一个语句。你可能想要做的是将T计算成T1,将某些变量T2传递给递归调用total,然后求和这两个值。另外,您的基本情况是错误的,您希望总数为0。

total(0,0). 

total(N,T):- 
    N > 0, 
    N1 is N-1, 
    T1 is N*N*N, 
    total(N1,T2), 
    T is T2+T1. 
+0

ahh非常感谢您的解释 – user2060185 2013-04-28 15:51:34