>

Scheme에서 기본 재귀 함수를 구현하려고하는데 올바르게 작성하기 위해 동일한 함수를 작성했습니다. Scheme과 Python 구현은 1에서 7까지의 값에 대해 동일한 대답을 반환합니다. 왜 이런 일이 일어나고 있는지 이해할 수 없습니다. (이것은 숙제를위한 것이지만 과제에서 묻는 질문이 아닙니다. 두 구현이 다른 값을 반환하는 이유를 이해하고 싶습니다)

# 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

  • 답변 # 1

    제도 프로그램에서 다음을 작성했습니다 :

    (* 4(- n 4))
    
    

    그러나 다음과 같아야합니다 :

    (* 4(f (- n 4)))
    
    

관련 자료

  • 이전 java - PHP 페이지에서 문자열을 보내는 방법
  • 다음 javascript - 인라인 편집에서 ng-blur가 true/false 값을 설정하지 않음