Как создать функцию, которая умножает все числа от 1 до «x» на времена? - PullRequest
3 голосов
/ 10 июня 2011

Я делаю функцию, которая умножает все числа между входом 1 и входом "x" с циклом dotimes. Пожалуйста, проверьте мою функцию и скажите, что не так, поскольку я не очень хорошо знаю циклы в Схеме.

(define (product x)
  (let ((result 1))
        (dotimes (temp x)
                 (set! result (* temp (+ result 1))))
    result))

1 Ответ

5 голосов
/ 11 июня 2011

Используйте рекурсию.Это способ делать вещи в схеме / ракетке.И старайтесь никогда не использовать set! и другие функции, которые изменяют переменные, если на самом деле нет другого выбора.

Вот пример учебника по рекурсии в Scheme:

(define factorial
  (lambda (x)
    (if (<= x 1)
        1
        (* x (factorial (- x 1))))))
...