1

一般来说,我是序言和递归的新手。给定每个立方体的大小由立方体编号表示。例如,total_cube_volume(3, T) 将有 3 个立方体:第一个立方体每边 1 英寸,第二个立方体每边 2 英寸,第三个立方体每边 3 英寸。因此,这个问题的总体积是 36。

到目前为止,这是我所拥有的,它可以编译,但是当我询问 total(3,T) 时,它会回答 no。任何建议都会有所帮助。谢谢。

 total(0,T).

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

1 回答 1

1

你的递归是错误的。你们都在计算T1,并将其传递给递归的 next 语句。您可能想要做的是计算N*N*N到 T1,将一些变量传递T2给递归total调用,然后将这两个值相加。此外,您的基本情况是错误的,您希望 0 的总数为 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.
于 2013-04-28T15:24:51.410 回答