gpt4 book ai didi

recursion - 序言倒计时

转载 作者:行者123 更新时间:2023-12-02 22:45:06 30 4
gpt4 key购买 nike

你好,我尝试编写像这样倒计时的递归 this

用序言语言

我尝试编写一些这样的代码:

down(Y,X):- Y>0,K is Y-1,down(K,X).

但其返回“false”。我不知道为什么它返回 bool 结果......它需要将 K 值插入到 X 中......一般来说,如何进行始终返回某个数字的递归......

我需要做什么?

交易很多

最佳答案

将副作用(如打印)放入谓词中通常是不好的做法。但另一方面,您的问题并没有明确您想要如何获得递减的值。

无论哪种方式,计数器的逻辑如下:

down(N, N). % the counter value
down(N, X) :-
succ(N0, N), % one less, until you reach zero
down(N0, X). % next counter value

然后您可以简单地查询:

?- down(3, X).

或者,如果您愿意,您可以一次打印所有内容:

?- forall( down(3, X), format("X = ~d~n", [X]) ).

参见here用于使用 SWI-Prolog 的 SWISH 的演示。

一些评论:使用 succ/2 确保第一个参数是非负整数。使用 forall/2 进行打印演示了如何使副作用显式化。

关于recursion - 序言倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402191/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com