我在prolog上有一些代码,但是这段代码不起作用。在PHP如何计算最多N个不成对数字的总和?
function sum($n)
{
if($n < 0) return;
if($n%2 == 0) return sum($n-1);
else return ($n+sum($n-2));
}
sum(N,_):-N<0,fail.
sum(N,S):-N=0,S=0,!.
sum(N,S):-N1=N-1,sum(N1,S1),S=S1+N.
?-sum(4,X),write(X).
正确的递归函数,我需要这个功能转化为序言。 (例如, sum(N,Result))。
? - sum(6,Result),write(Result)。
预计9
我用程序语言编写递归函数。如何在prolog中转换? – BILL
函数总和($ n){ if($ n <0)return; if($ n%2 == 0)return sum($ n-1);其他 return($ n + sum($ n-2)); } – BILL
我认为如果N <1,php返回0。所以你不能只是失败 –