是否有可能在Prolog中实现这样的语义?

时间:2014-07-20 15:01:29

标签: prolog

所以基本上在C中,我们可以实现这样的语义:

int foo(int a )
{
    if (a == 100)
        return 0;
    else
      {}

    a = a + 1;
    foo(a);
}

所以我试图在这里使用Prolog来实现相同的语义,但我真正感到困惑的是Prolog是否有一些东西要表示         if(a == 100)             返回0;         其他           {}

有人能就这个问题给我一些帮助吗?

2 个答案:

答案 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).