Я немного новый в синтаксисе схемы ... Я пытаюсь создать простую программу, в которой вы вводите целое число, если целое даже что-то делает, и если это странно, сделайте что-то еще. Я смог сделать эту часть. Теперь мне нужно сделать петлю, где я могу уменьшаю число, пока она не равна 1. Вот мой код:Схема во время цикла
#lang racket
(define (even? n)
(if (eqv? n 0) #t
(odd? (- n 1))))
(define (odd? n)
(if (eqv? n 0) #f
(even? (- n 1))))
; this is the function that i wanted to be inside the loop
(define (sequence n)
(cond
[(even? n) n(/ n 2)]
[(odd? n) n(+(* n 3) 1) ])
)
(sequence 5)
Выход должен быть последовательностью чисел. Другими словами, он должен быть внутри списка.
спасибо, что это прекрасно и быстро – Muhsag
не могли бы вы объяснить, в какой части кода n декрементируется на 1, что, если у меня есть случай, который я хочу увеличить. Спасибо – Muhsag
В последовательности Collatz число не уменьшено _ через one_. Если n четно, мы уменьшаем его, уменьшая его половину в этой части '(/ n 2)'. Если n нечетно, мы фактически увеличиваем его в этой части: '(+ (* n 3) 1)'. Обратите внимание, что в обоих случаях измененное значение 'n' передается как параметр для следующего рекурсивного вызова, и так мы обычно реализуем цикл в Scheme –