2014-12-14 3 views
0

Мой первый вопрос: DСхема Сумма с введенным номером и сроком

Я хочу написать функцию, которая дает мне сумму в соответствии с введенным номером и сроком.

У меня есть это прямо сейчас:

(define series (lambda (n a-term) 
      (if (= n 0) 
       0 
      (+ a-term (series (- n 1) a-term))))) 

Я хочу, чтобы ввести натуральное число n (сумма от 0 до n), и я хочу, чтобы ввести a-term

, такие как (+ n 1) или (sqr(n)). В a-term в основном говорится, как рассчитать сумму в сумме.

Я получаю сообщение об ошибке +: expects a number as 1st argument, given (lambda (a1) ...) Так что в принципе это ожидает здесь: (+ a-term (series (- n 1) a-term))))), чтобы быть номером, но почему это не номер? Я имею в виду, если я введу номер для n, почему он не возвращает число на срок?

действительный звонок будет (series 10 (lambda (n) (sqr(n)))). Результатом должна быть сумма всех скважин до 10 (385).

Другой пример может быть (series 100 (lambda (n) n)). Результат будет 5050 = сумма всех чисел от 0 до 100

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

+0

Можете ли вы привести пример того, как вы могли бы называть 'series' некоторыми аргументами и каков ожидаемый результат? – uselpa

+0

уверен! отредактировал пример в вопросе выше – ViktorG

ответ

0

Для вызова процедуры aterm с n в качестве параметра необходимо выражают его как (aterm n):

(define series 
    (lambda (n a-term) 
    (if (= n 0) 
     0 
     (+ (a-term n) (series (- n 1) a-term))))) 

затем

> (series 10 (lambda (n) (sqr n))) 
385 

или, сокращенно

> (series 10 sqr) 
385 
+0

ах я вижу большое спасибо :) – ViktorG

Смежные вопросы