2015-11-01 2 views
0

Я пытаюсь реализовать функцию, которая говорит, если параметр является степенью 2. Вот что я имеюсхема рекурсии - мощность в Int

(define (powof2 x) (cond 
    [(and (even? x) (> x 1)) ((powof2 (/ x 2)))] 
    [else (equal?(x 1))])) 

Но когда я пытаюсь запустить его с параметром 12 I получите сообщение об ошибке: Ошибка: 3 не является функцией [powof2, powof2, powof2, (anon)]

Любая помощь?

Спасибо!

ответ

2

А те скобка ;-)

(define (powof2 x) 
    (cond 
    [(and (even? x) (> x 1)) (powof2 (/ x 2))] 
    [else (= x 1)])) 

Обратите внимание, что в 3-й линии и четвёртой линии вы имели дополнительную пару скобок, а в 4-й строке, что вы должны использовать = для сравнения чисел.

+0

Большое спасибо! Я вижу это сейчас – bZhang

+0

Отлично! Пожалуйста. – uselpa

+0

Я вижу, что вы никогда не принимали ответы на свои вопросы. Может быть, это хорошая идея, если вы считаете, что на ваш вопрос ответили полностью. – uselpa

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