我需要编写一个函数,该函数将返回可以将 n(n 是自然数)写为自然数之和的方式数。例如:4可以写成1+1+1+1、1+1+2、2+2、3+1和4。我写了一个函数,返回所有选项的个数,但是不取考虑到可能性 1 + 1 + 2 和 2 + 1 + 1(以及所有类似情况)是相等的。所以对于 n=4 它返回 8 而不是 5。这是我的函数:
(define (possibilities n)
(define (loop i)
(cond [(= i n) 1]
[(> i n) 0]
[(+ (possibilities (- n i)) (loop (+ i 1)))]))
(cond [(< n 1) 0]
[#t (loop 1)]))
您能否帮我修复我的功能,这样它就可以按应有的方式工作。谢谢你。