Определите процедуру, которая принимает три числа в качестве аргументов и возвращает сумму квадратов двух больших чисел - PullRequest
0 голосов
/ 13 января 2019

У меня проблемы с выяснением, как отсортировать 2 больших числа и вернуть их в процедуру суммы квадратов. Я изо всех сил пытаюсь написать код в синтаксисе схемы. Я пытаюсь написать это как можно более чисто, и я продолжаю бегать кругами в голове и на бумаге, пытаясь это сделать. книга описывает мышление «процедурно», и мне кажется, у меня проблемы с этим аспектом.

В книге приводится код для сумм квадратов и квадратов. Я бы включил свой псевдокод, но я сильно потерян. Вот код, который дает книга:

(define (square x) (* x x))

(define (sum-of-squares x y)
  (+ (square x) (square y)))

Как определить процедуру, которая принимает три числа в качестве аргументов и возвращает сумму квадратов двух больших чисел?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Введите код для min-of-three. негатив (как в фотографии) - это то, что вам нужно:

(define (negative-min-of-three a b c)
   (if (<= a b)
       (if (<= a c)
           (..... b ... c .....)
           (..... a ... b .....))
       (if (<= 
   ..........

Вы можете заполнить код и переименовать его. Часы тикают!

0 голосов
/ 13 января 2019

Как определить процедуру, которая принимает три числа в качестве аргументов и возвращает сумму квадратов двух больших чисел?

Сначала вам нужно имя для процедуры. Давайте назовем это sum-of-squares-two-largest.

(define (sum-of-squares-two-largest x y z)
   ...)

Он может использовать функцию sum-of-squares, но ему нужно сначала найти два больших числа из x, y, z.

Один из способов сделать это - избавиться от наименьшего числа. Вы можете определить вспомогательную процедуру smallest? a b c, которая проверяет, является ли наименьшее из 3 чисел, выполнив (and (<= a b) (<= a c)).

(define (sum-of-squares-two-largest x y z)
   (if (smallest? x y z)
       (sum-of-squares y z)
       (if (smallest? y x z)
           ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...