我想问这个程序是否是尾递归的,如何使它成为尾递归的?
euclidsqr([], [], 0).
euclidsqr([X|Xs], [Y|Ys], ED) :-
euclidsqr(Xs, Ys, ED1),
ED is ED1 + (X-Y)*(X-Y).
这里是相应的尾部递归版本:
euclidsqr(Xs, Ys, ED) :-
euclidsqr(Xs, Ys, 0, ED).
euclidsqr([], [], ED,ED).
euclidsqr([X|Xs], [Y|Ys], ED0,ED) :-
ED1 is ED0 + (X-Y)*(X-Y),
euclidsqr(Xs, Ys, ED1,ED).