Recursion Prolog与递归

Recursion Prolog与递归,recursion,prolog,Recursion,Prolog,我对prolog和递归都是新手。 给定每个立方体的大小,用立方体编号表示。例如,总体积(3,T)将有3个立方体:第一个立方体每侧有1英寸,第二个立方体每侧有2英寸,第三个立方体每侧有3英寸。因此,该问题的总体积为36 这是我到目前为止得到的,它是编译的,但当我问total(3,T)时,它回答没有。任何建议都会有帮助。谢谢 total(0,T). total(N,T):- N>0, N1 is N-1, T1 is N*N*N, total(N1

我对prolog和递归都是新手。 给定每个立方体的大小,用立方体编号表示。例如,总体积(3,T)将有3个立方体:第一个立方体每侧有1英寸,第二个立方体每侧有2英寸,第三个立方体每侧有3英寸。因此,该问题的总体积为36

这是我到目前为止得到的,它是编译的,但当我问total(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.

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

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