Когда-то давно здесь была тема про вычисление ! на scheme, и там кто-то пожаловался на chicken scheme, который не вычислял !16384, а выводил +inf. Предлагаю запустить следующий код на своём интерпретаторе и поделится результатами (само число, пожалуй, приводить не надо :), достаточно просто убедиться, что оно не +inf, и привести время выполнения). У меня gambit 4.2.8: > (define ! (lambda (n) (letrec ((iteration (lambda (l h) (if (= l h) l (let ((m (floor (/ (+ l h) 2)))) (* (iteration l m) (iteration (+ m 1) h))))))) (cond ((not (integer? n)) (error "! -- n should be an integer")) ((< n 1) (error "! -- n should be greater or equal to 1")) (else (iteration 1 n)))))) > (call-with-output-file "/dev/null" (lambda (port) (write (time (! 131072)) port))) (time (! 131072)) 2475 ms real time 2250 ms cpu time (2172 user, 78 system) 300 collections accounting for 217 ms real time (188 user, 8 system) 148454472 bytes allocated 15379 minor faults no major faults И ещё: можно ли как-нибудь попроще избавиться от вывода ! кроме как открыть /dev/null и направить его туда?
Ответ на:
комментарий
от yyk
Ответ на:
комментарий
от Cy6erBr4in
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от undet
Ответ на:
комментарий
от yyk
Ответ на:
комментарий
от undet
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [scheme] рекурсия против итерации (2007)
- Форум Интерпретатор scheme (2005)
- Форум Интерпретатор scheme (2005)
- Форум Интерпретатор/компилятор Scheme (2011)
- Форум Еще один интерпретатор Scheme (2013)
- Форум интерпретатор scheme с readline? (2008)
- Форум Scheme интерпретатор для smart60 (2007)
- Форум Посоветуйте dynamic dns клиент, который будет нормально работать с http://freedns.afraid.org/ (2010)
- Форум интерпретаторы? (2005)
- Форум интерпретатор (2007)