2016-02-03 3 views
0

Я пытаюсь реализовать рекурсивную процедуру для суммы квадратов первых n нечетных чисел на Racket (начиная с 1) например, (sum-alt-squares-recursive 0) равен 0 (sum-alt-squares- рекурсивный 1) равен 1 (1^2) (сумма-квадрат-рекурсивный 2) равен 10 (3^2 + 1^2) (сумма-квадрат-рекурсивный 3) равен 35 (5^2 + 3^2 + 1^2)Рекурсивная процедура для суммы квадратов первых n нечетных чисел?

+1

что вы пробовали? StackOverflow работает для решения конкретных проблем, например: «Я попытался использовать X, используя Y, но вместо этого произошло Z. Где я ошибся?» Нам нужно больше от вас, чтобы помочь. – Vitruvius

+0

'(define (sum-alt-squares n) (* 1/3 n (sub1 (* 4 nn))))' (спасибо, [WolframAlpha] (http://www.wolframalpha.com/input/?i = sum_i% 3D1% 5En +% 282i-1% 29% 5E2)!) –

ответ

0

Это рекурсивная процедура, которая использует линейный итерационный процесс

(define (sum-alt-squares-recursive x (y 1) (z 0)) 
    (if (zero? x) 
     z          ; if x is zero, return accumulator z 
     (sum-alt-squares-recursive (- x 1)  ; x goes down by 1 each iteration 
           (+ y 2)  ; y starts at 1 and goes up by 2 each iteration 
           (+ z (* y y)) ; z, goes up by y^2 each time 
    ))) 

(sum-alt-squares-recursive 1) ; => 1 
(sum-alt-squares-recursive 2) ; => 10 
(sum-alt-squares-recursive 3) ; => 35 
Смежные вопросы