Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Организация рекурсивных вычислений в Lisp

Автор: dron4ik 2.05.2010 22:47

Всем привет! Помогите пожалуйста реализовать средствами Lisp рекурсивную функцию UFunc для этого задания---->составить список из n+1 первых положительных чисел, кратных трем( Исследовать возможность применения функции print для получения отладочной информации в процессе выполнения отдельного рекурсивного вызова функции.Записать результат выполнения функции UFunc В файл outdata.txt.


Но для выполнения этого задания необходимо использовать след системные функции..
1)Задание локальных символов: let;
2)Условные предложения и логические функции: cond, if, when, unless, and, or, not.
3)Отладка(трассировка вызова)рекурсивныз функций: trace, untrace.
4)Работа с потоками: open, read, print, close.


Сделали, но я не понимаю как она работает...есть не которые не доработк вот к примеру результат выполнения функции UFunc в файл не сохраняет..вернее даже не реализовано, помогите пожалуйста исправить(((

вот код

Код
CL-USER> (defun ufunc (n base &optional acc)
           (if (< n 1)
               acc
               (ufunc (- n 1) base (cons (* n base) acc))))
UFUNC
CL-USER> (ufunc 10 3)
(3 6 9 12 15 18 21 24 27 30)

CL-USER> (trace ufunc)
(UFUNC)

CL-USER> (ufunc 10 3)
  0: (UFUNC 10 3)
    1: (UFUNC 9 3 (30))
      2: (UFUNC 8 3 (27 30))
        3: (UFUNC 7 3 (24 27 30))
          4: (UFUNC 6 3 (21 24 27 30))
            5: (UFUNC 5 3 (18 21 24 27 30))
              6: (UFUNC 4 3 (15 18 21 24 27 30))
                7: (UFUNC 3 3 (12 15 18 21 24 27 30))
                  8: (UFUNC 2 3 (9 12 15 18 21 24 27 30))
                    9: (UFUNC 1 3 (6 9 12 15 18 21 24 27 30))
                      10: (UFUNC 0 3 (3 6 9 12 15 18 21 24 27 30))
                      10: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
                    9: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
                  8: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
                7: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
              6: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
            5: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
          4: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
        3: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
      2: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
    1: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
  0: UFUNC returned (3 6 9 12 15 18 21 24 27 30)
(3 6 9 12 15 18 21 24 27 30)

CL-USER>