2015-11-08 4 views
0

Я пытаюсь проверить, если я меньше 3-х цифр, если он возвращается, иначе рекурсивно вызовите first2 с i/10, пока оно не станет меньше двух цифр. С моей логикой кажется, что 12345 должен вернуться 12.345, и я мог бы найти другой способ отрезать десятичную, но он просто возвращает 100. Почему это? Я искал примеры этой логики, и, похоже, это должно сработать. Это не имеет никакого смысла для меня.Попытка вернуть первые 2 цифры в схеме

(define(first2 i) 

    (cond(< i 100) 

     (i) 

     (first2 (/ i 10)))) 

> (first2 12345) 

100 
+0

Вам не хватает круглых скобок. Документация для cond находится здесь: http://docs.racket-lang.org/reference/if.html?q=cond#%28form._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt% 29._cond% 29% 29 –

ответ

1

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

(define(first2 i) 

    (if(< i 100) 

     i 

     (first2 (/ i 10)))) 

> (first2 12345) 
12