如何将此转换为非递归。这段代码推出了N的阶乘。
findSolution
答案 0 :(得分:3)
在您的定义中没有递归调用的情况下,有一种方法是:
numlist/2
这种方法避免了定义中语法级别的递归。 foldl/4
和for (int i = 1; i < 31; i++)
{
var getData = "SELECT * FROM Test WHERE date = '" + inputDate + "'";
sumKG = 0;
foreach (var c in db.Query(getData))
{
var total = c.kg * c.rep * c.sett;
sumKG += total;
}
inputDate = inputDate.AddDays(1);
@sumKG <br />
}
都很可能具有递归定义,但您不必 查看它。这可能属于&#34; d)我缺少的其他东西&#34;类别from my comment to your question。
答案 1 :(得分:-1)
如果您的Prolog有global variables,您可以
fakultaet(N,F) :-
nb_setval(f,1),
forall(between(2,N,I), (nb_getval(f,T), G is T*I, nb_setval(f,G))),
nb_getval(f,F).
nb_setval / 2,nb_getval / 2的这种特殊用法可以用assert / 1,retract / 1进行部分模拟,但结果程序效率非常非常低