Қосу амалының мен білмеген реализациясы

Блог аты dosbol
Бүтін сандар үшін

(define (+ x y)
    (if (= x 0)
        y
        (+ (- x 1) (+ y 1))))


Трассировка
(+ 3 4)
(if (= 3 0) 4 (+ (- 3 1)(+ 4 1)))
(+ (- 3 1)(+ 4 1))
(+ 2 5)
(if (= 2 0) 5 (+ (- 2 1)(+ 5 1)))
(+ (- 2 1)(+ 5 1))
(+ 1 6)
(if (= 1 0) 6 (+ (- 1 1)(+ 6 1)))
(+ (- 1 1)(+ 6 1))
(+ 0 7)
(if (= 0 0) 7 (+ (- 0 1)(+ 7 1)))
7

8 пікір

avatar
(=
мына белгі нені білдіреді?
avatar
аа түсіндім (=x0) — x==0 ғой
avatar
тен ба? деген
(= 1 1) true
(= 1 2) false
avatar
x+y = (x-1)+(y+1)
Бұдан не ұтқанын түсінбедім
avatar
еки саннын биреуин 0-ге дейн азайта береди, сайкесинше екиншисин арттыра береди.
0 ге жеткенде екиншисин кайтара кояды
avatar
айтпақшы рекурсия ғой, ия
avatar
процедура рекурсия. бірақ, процесс итеративті
Тек қана тіркелген және авторизациядан өткен қолданушылар пікір қалдыра алады.