ある数のn乗[A^n = A * A ^(n-1)]を再帰的に見つけ、ショートカットA ^(2n)= A ^ n * A^nを使用する述語を書き込もうとしています。
これがこれまでの解決策です。
p(_,0,1):-!.
p(A,N,R):-N mod 2=0,!,N1=N/2,p(A,N1,R1),R=R1*R1.
p(A,N,R):-N1=N-1,p(A,N1,R1),R=R1*A.
ここで、この末尾再帰を作成します。階乗やパワーなどの単純なケースでは、ショートカットなしで(アキュムレータを追加することで)テールを実行できますが、これは困難です。
どんな助けでも大歓迎です!