我正在尝试在Scheme中实现一个基本的递归函数,并且我编写了相同的函数以确保我正确地编写它。 Scheme和Python实现为1到7的值返回相同的答案。但是,值开始分散。我无法理解为什么会这样。 (这是用于作业,但这不是作业中要求的问题,我只是想理解为什么2个实现返回不同的值)
# Function to be implemented
f(n) = n, if n<4
f(n) = f(n-1) + 2f(n-2) + 3f(n-3) + 4f(n-4), otherwise
(define (f n)
(if (< n 4)
n
(+ (f (- n 1)) (* 2(f(- n 2))) (* 3(f (- n 3))) (* 4(- n 4)))))
(f 1)
(f 2)
(f 3)
(f 4)
(f 5)
(f 6)
(f 7)
(f 8)
(f 9)
(f 10)
1
2
3
10
26
63
157
377
900
2149
def f(n):
if n<4:
return n
else:
return f(n-1) + 2*f(n-2) + 3*f(n-3) + 4*f(n-4)
print (f(1))
print (f(2))
print (f(3))
print (f(4))
print (f(5))
print (f(6))
print (f(7))
print (f(8))
print (f(9))
print (f(10))
1
2
3
10
26
63
157
401
1008
2533
答案 0 :(得分:2)
在您的计划程序中,您写道:
(* 4(- n 4))
但它应该是这样的:
(* 4(f (- n 4)))