检查X是否是方案中的N的阶乘

时间:2015-11-04 07:04:42

标签: scheme factorial

你可以帮助我以最好的方式解决这个问题吗? 我想知道这个函数如何在方案中写“fac(N,X)是可证明的,如果X是N的阶乘” 此代码成功运行但没有输出执行!

(define (fact N)
  (* N (fact (- N 1))))
(define (fac N X)
  (if (= X (fact N)) #T )))

1 个答案:

答案 0 :(得分:0)

在你的事实定义中,你需要在达到N = 1时停止递归调用。

在你的fac的定义中,你在定义的末尾有一个太多')'。此外,您可以删除if函数,因为它没有任何实际用途。

更正的代码......

(define (fact N)
  (if (> N 1)
    (* N (fact (- N 1)))
    1))

(define (fac N X)
  (= X (fact N)))