> 1 <

Автор Сообщение

Zephyr

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#5018   2011-11-09 17:27 GMT+3 часа(ов)      
вот написал функцию для вычисления числа Стирлинга,но она почему то не работает,подскажите что не так?
(defun a(n k)
(cond
((= n k) 1)
((= k 0) 0)
((= n 0) 0)
(t (+ (a ((- n 1) (- k 1))) (* k (a ((- n 1) k)))))
 
)
)
 

Paul4936

Members


Статус

42 сообщений

Где: Russia
Род занятий: (\/)(o_O)(\/)
Возраст: 29

#5019   2011-11-09 18:40 GMT+3 часа(ов)      
У тебя
(a ((- n 1) (- k 1)))

т.е.
ты функции а даешь вместо двух аргументов один, и неправильный,
надо так
(a (- n 1) (- k 1)) 

Так же и тут
(a ((- n 1) k))
, надо
(a (- n 1) k)

Итого имеем:
(defun a(n k)
(cond
((= n k) 1)
((= k 0) 0)
((= n 0) 0)
(t (+ (a (- n 1) (- k 1)) (* k (a (- n 1) k))))
)
)

P.S. Может лучьше вычислить не рекурсивкой формулой?
> 1 <


Онлайн :

0 пользователь(ей), 27 гость(ей) :