Функция Max Max (рекурсия) - PullRequest
       7

Функция Max Max (рекурсия)

1 голос
/ 26 февраля 2011

Назначение - определить функцию, которая принимает один список в качестве параметра и выводит максимальное значение списка.Я чувствую, что мои вложенные «если» и «позволяет» являются чрезмерными, и функция преждевременно завершается без вывода ответа.Я искал пример правильного использования let с рекурсией, но оказался пустым, функции отладки в DrRacket не очень полезны для трассировки через рекурсивный вызов.

Любая помощь приветствуется, спасибо.

(define max
(lambda (x)
  (let ((y (car x)))
    (if (null? (cdr x))
      y
      (let ((m (max(cdr x))))
           (if (> m y)
               m
               y)
     )))))

1 Ответ

2 голосов
/ 26 февраля 2011

Я вижу несколько ошибок в вашем коде: во-первых, (null? (cadr x)) не является корректным по типу; x - это список чисел, поэтому (cadr x) - это число, которое никогда не будет нулевым. Кроме того, вы не используете y после второго раза, когда он связан с let. Не могли бы вы попытаться описать на английском языке, что должна делать функция max в списках?

...