所以基本上在C
中,我们可以实现这样的语义:
int foo(int a )
{
if (a == 100)
return 0;
else
{}
a = a + 1;
foo(a);
}
所以我试图在这里使用Prolog
来实现相同的语义,但我真正感到困惑的是Prolog是否有一些东西要表示
if(a == 100)
返回0;
其他
{}
有人能就这个问题给我一些帮助吗?
答案 0 :(得分:1)
这是Prolog翻译(我假设你的意思是return foo(a);
,而不仅仅是foo(a);
):
foo(A, Result) :-
( A = 100 ->
Result = 0
;
NextA is A + 1,
foo(NextA, Result)
).
如果A>它会永远运行100,就像你的C函数一样。
答案 1 :(得分:-1)
您是否知道此函数始终返回0?
无论如何,这是一个解决方案,你可以在Prolog中做到这一点:
foo(100,0):-!.
foo(A, Result):-
A1 is A+1,
foo(A1, Result).