简体   繁体   English

Prolog打印数字从1到N?

[英]Prolog print numbers from 1 to N?

Assume the user gives an input N to the function, how would I print these numbers from 1 to N (recursively or other wise). 假设用户为该函数提供了输入N,我将如何打印这些数字(从1到N)(递归或其他方式)。

example

print_numbers(40). print_numbers(40)。

->1 - > 1
->2 - > 2
->… - > ...
->40 - > 40

You want to print numbers from 1 to N so print_numbers(N) can be translated in print_numbers(1, N). 您要打印从1到N的数字,以便可以将print_numbers(N)转换为print_numbers(1,N)。

Now what is print_numbers from X to Y ? 现在从X到Y的print_numbers是什么?

print_numbers from X to Y is print(X) and print_numbers from X+1 to N! 从X到Y的print_numbers是print(X),从X + 1到N的print_numbers!

In Prolog, you will get : 在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).

Using between/3 and forall/2 : 使用between/3forall/2

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM