PLT [Ракетка / Схема] Сложный процент + Аккумуляторы -Как - PullRequest
0 голосов
/ 06 июля 2010

В другой раз я возлюсь с (должно быть легко) заданием.

сложный процент ... (формула известна) Схема ... (В течение одного года все работает безупречно)

Проблема: необходим аккумулятор ... Моя программа должна иметь возможность запоминать результат предыдущего расчета и помещать его в качестве образца для следующего следующего.

Вот мой вопрос: Как настроитьАку-процедуры без списков ....?Или я сейчас совершенно неправ, и я должен их использовать?

Каким-то образом мне придется вызывать рекурсивную процедуру снова и снова ...

Заранее большое спасибо, искренне, Andreas_P

Andreas_P

Ответы [ 4 ]

2 голосов
/ 07 июля 2010

Чтение твоего вопроса вызывает у меня головокружение. У меня есть куча ответов для вас, но я чувствую, что вы не совсем уверены, что ваш вопрос.

Мой реальный совет для вас - щедрая помощь Как разрабатывать программы . В частности, вам нужно начать с первого шага и решить, что ваша программа принимает и производит, и написать однострочное описание того, как входы отображаются на выходы.

Как всегда, извинения за любое данное нарушение.

0 голосов
/ 23 октября 2015
;interest:number -> number
(define (interest x)
  (or(if(and(> x 0)(< x 1000))(* .04 x))(if(and(> x 1000)(< x 5000))(* .045 x))(if(> x 5000)(* .05 x))))
(interest 500)(* .04 500)
(interest 1600)(* .045 1600)
(interest 90000)(* .05 90000)
0 голосов
/ 07 июля 2010

Большое спасибо за ваши добрые ответы.

;; [Нет реального DBC!]
;; КОНТРАКТ: сложный процент: число число число -> число
;; ЦЕЛЬ: Эта функциядолжен создать метод расчета "сложный процент",
;;при рекурсивном вызове функции сложного процента до х раз.
;; ПРИМЕР: (сложный процент 1000 1,05 360) // Должен произвести 1050

(определить (сложный процентный капитал)- процентная ставка по времени)
(cond;
[(процентное время> = 3600) капитал];
[еще;
(* процентная ставка (процентная ставка по сложному процентному капиталу (- процентное время 360)))];
);
);

(регистрация (сложный процент 2000 1,05 360) 2100 0,1);
(проверка-с (сложные проценты 2000 1,05 720) 2205 0,01);
(регистрация (сложные проценты 2000 1,05 1080) 2315,25 0,001);
(регистрация (сложные проценты 2000 1,05 1440) 2431,0125 0,0001);
(регистрация (сложный процент 2000, 1,05 1800) 2552,563125 0,00001);
(регистрация (сложный процент 2000, 1,05 2160) 2680.19128125 0,000001);
(регистрация в (сложный процент)проценты 2000 1,05 2540) 2814.20084531 0,0000001);
(чек-ин (сложные проценты 2000 1,05 2900) 2954,91088758 0,000000001);
; (сложный процент 2000 1,05 3260)
; (сложный процент 2000 1,05 3600)

Сначала вы правы, я ошибся.... касательно аккумуляторов или нет ... тогда один из студентов объяснил мне, почему и вот результат.

Ну, [первый комментатор]: Да, это выглядит очень похоже, но из-за этого SICPкоторый был запланирован на 6.001 MIT, который я не смог реально использовать из-за отсутствия установленного модуля коррекции SICP в DrRacket.

Хорошо [второй комментатор]: возможно, вы правы, и я должен идтиподробнее и прочитайте еще немного о «функциях памяти» на нашем факультете.

И последнее, но не менее важное: спасибо за ваши оба ответа, и сейчас я чувствую (несколько) просветленный, чтобы решить и закрытьэта "нить".

Хорошего дня ... [ребята-гики] Andreas_P

0 голосов
/ 06 июля 2010

Имеете ли вы в виду что-то вроде:

(define (fv n pv r)
  (if (= n 0)
      pv
      (fv (- n 1) (* pv (+ 1 r)) r)))

, где значение pv заменяется значением в конце периода, а число периодов уменьшается на один для каждой рекурсии.

SICP хорошо описывает, как структурировать рекурсию - стоит прочитать.

...