Prolog和递归

时间:2013-04-28 15:15:45

标签: recursion prolog

我是初学者和初学者的新手。   给定每个立方体的大小由立方体数字表示。例如,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 个答案:

答案 0 :(得分:1)

你的递归是错误的。您正在计算T1,并将其传递给递归的下一个语句。您可能想要做的是将N*N*N计算到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.