我编写了以下代码,它应该符合我的逻辑,但事实并非如此。
我应该检查给定的术语是否是二的幂。例如s(s(s(nul)))
应该返回false,s(s(s(s(nul)))
应该返回true。
substractWhileY(X,0,rezult).
substractWhileY(s(X),Y,rezult):-
Y > 0, number is 1, substractWhileY(X,Y - number, rezult).
degreeOftwo(X):-
substractWhileY(X,2,rezult),
pagalba(X, 2, rezult).
calculateAnswer(X, currentCounter, currentValue):-
currentCounter is currentCounter * 2,
substractWhileY(currentValue, currentCounter , rezult),
rezult\= null,
calculateAnswer(X, currentCounter , rezult).
我的想法是检查给定的 therm 是否是任何两个度数,如果不是,则不是二度数。
有了数字,它应该像这样工作。例如,我给出数字 8。
First time it checks if 8 - 2 = 0.
second time if 8 - 4 = 0.
third time if 8 - 8 = 0.
所以 8 id 两个的幂。
也许其他解决方案会更好,所以感谢您的帮助。