История изменений
Исправление monk, (текущая версия) :
Если питоном, то надо осознавать, что то, что в питоне называется списками, не является списками в смысле лиспа. И рекурсия там ограниченная.
Если
(define (length items)
(define (length-iter a count)
(if (null? a)
count
(length-iter (cdr a) (+ 1 count))))
(length-iter items 0))
является эффективным решением, то эквивалент на питоне:
def length(items):
def length_iter(a, count):
if a == []:
return count
else:
return length_iter(a[1:], 1+count)
return length_iter(items, 0)
является примером того, как никогда не надо писать на питоне.
Исходная версия monk, :
Если питоном, то надо осознавать, что то, что в питоне называется списками, не является списками в смысле лиспа. И рекурсия там органиченная.
Если
(define (length items)
(define (length-iter a count)
(if (null? a)
count
(length-iter (cdr a) (+ 1 count))))
(length-iter items 0))
является эффективным решением, то эквивалент на питоне:
def length(items):
def length_iter(a, count):
if a == []:
return count
else:
return length_iter(a[1:], 1+count)
return length_iter(items, 0)
является примером того, как никогда не надо писать на питоне.