#list #lambda #functional-programming #scheme #lisp
#Список #лямбда #функциональное программирование #схема #lisp
Вопрос:
Я хочу, чтобы программа подсчитывала, сколько раз определенная подстрока была найдена в выражении.Я написал следующий код, но я не получаю ожидаемый результат.
(define (count-occurrences s slist)
(if (null? slist)
0
( (count-occurrences-in-s-sexp s (car slist))
(count-occurrences s (cdr slist)))))
(define (count-occurrences-in-s-sexp s sexp)
(if (symbol? sexp)
(if (eqv? sexp s) 1 0)
(count-occurrences s sexp)))
Input: (count-occur '(a x) '((x y z) x (z (a x) y)) )
Output: 0
Expected O/p : 1
Input: (count-occur 'x '((x y z) x (z (a x) y)))
Output: 3
Expected O/p : 3
Когда я даю ввод списка.Я не получаю ожидаемый результат.Кто-нибудь может мне помочь :/
Комментарии:
1. Каков ожидаемый результат?
Ответ №1:
Вы хотите использовать equal?
вместо eqv?
, чтобы определить, совпадают ли два списка.
Комментарии:
1. Это все то же самое. Он не сравнивает список: ( . Я получаю ноль