【问题标题】:Prolog Program to Find Square of Natural Numbers寻找自然数平方的 Prolog 程序
【发布时间】:2013-05-30 09:00:59
【问题描述】:

我下面的代码是为了生成自然数的平方

(即sq(X). -> X=0; X=1; X=4; X=9; X=16; ...

nat(0).
nat(X) :- nat(Y), Z is Y+1, X is Z*Z.

但我得到的答案是:

1

0 ?- nat(X).

X = 0 ;

X = 1 ;

X = 4 ;

X = 25 ;

X = 676 

应该是一个快速修复,但我在这方面花费的时间比我想说的要长。非常感谢任何帮助!

【问题讨论】:

    标签: iterator prolog perfect-square


    【解决方案1】:

    您的 nat/1 似乎确实返回了不同的序列。应该是

    nat(0).
    nat(X) :- nat(Y), X is Y+1.
    

    然后,一个 不同的正方形谓词

    sq(X) :- % call nat/1, square it...
    

    请填写代码

    【讨论】:

    • 是的,确实是愚蠢的修复,我已经研究代码很长时间了,以至于我打算将它们全部放入一个谓词中,而不是拆分它。谢谢CapelliC,很好的答案! nat(0).nat(X) :- nat(Y), X is Y+1.sq(X) :- nat(Y), X is Y*Y.
    猜你喜欢
    • 1970-01-01
    • 2017-03-18
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    相关资源
    最近更新 更多