Prolog打印数字从1到N?

时间:2018-05-16 05:42:37

标签: prolog

假设用户给函数输入了N,我将如何从1到N(递归或其他方式)打印这些数字。

例如

print_numbers(40)。

- > 1
- > 2
- > ...
- →40

2 个答案:

答案 0 :(得分:2)

您希望打印从1到N的数字,因此print_numbers(N)可以在print_numbers(1,N)中进行翻译。

现在什么是从X到Y的print_numbers?

从X到Y的print_numbers是print(X)和print_numbers从X + 1到N!

在Prolog中,你会得到:

print_numbers(N) :-
    print_numbers(1, N).

% general case X must be lower than Y
print_numbers(X, Y) :-
    X =< Y,
    writeln(X),
    X1 is X + 1,
    print_numbers(X1, Y).

答案 1 :(得分:2)

使用between/3forall/2

?- forall(between(1, 40, X), writeln(X))
1
2
3
...
39
40
true.
相关问题